属性の取得は tag[属性名] で取得できますよ。
例えば、img タグなら、img['alt'] で img タグの alt 属性が取得できます。
Beautiful Soup Documentation を見てください。
Beautiful Soup の find(), find_all() を使った要素の検索方法 まとめ
Beautiful Soup の DOM ツリーのアクセス方法 まとめ
python
1from collections import OrderedDict
2import pandas as pd
3
4def table_to_dataframe(table):
5 '''テーブルを DataFrame に変換する。
6 '''
7 data = OrderedDict()
8
9 for row in table.find_all('tr'):
10 cells = row.find_all(['th', 'td'])
11 # 1列目はタイトル
12 title = cells[0].text
13 # 2列目以降は中身
14 # セルの中身が img タグの場合は alt 属性の値、そうでない場合は要素の値
15 contents = [c.img['alt'] if c.img else c.text for c in cells[1:]]
16
17 data[title] = contents
18 return pd.DataFrame(data)
19
20for table in soup.select('div.institution02 > table'):
21 df = table_to_dataframe(table)
22 title = table.find_previous_sibling('h4').text
23 df.to_csv('{}.csv'.format(title))
取得された DataFrame
| 日付 | 曜日 | 午前利用9時から12時30分まで | 午後利用1時から4時30分まで | 夜間利用5時から9時まで |
---|
0 | 16 | 火 | 体育室部分貸し | 空き | 予約済み(仮予約を含む) |
1 | 17 | 水 | 体育室部分貸し | 予約済み(仮予約を含む) | 予約済み(仮予約を含む) |
2 | 18 | 木 | 予約済み(仮予約を含む) | 予約済み(仮予約を含む) | 予約済み(仮予約を含む) |
3 | 19 | 金 | 体育室部分貸し | 体育室部分貸し | 予約済み(仮予約を含む) |
4 | 20 | 土 | 予約済み(仮予約を含む) | 予約済み(仮予約を含む) | 予約済み(仮予約を含む) |
5 | 21 | 日 | 予約済み(仮予約を含む) | 予約済み(仮予約を含む) | 閉館または休館日 |
6 | 22 | 月 | 閉館または休館日 | 閉館または休館日 | 閉館または休館日 |