今日もスクレイピングにチャレンジしています。
こちらの記事をお手本にしました。
【Python】BeautifulSoupを使ってテーブルをスクレイピング
ところが最初からヘンテコなデータが吐き出されている。なんでだー!?
複数のテーブルがあった!
ソースをよく見たらテーブルが10個以上あり、最初のテーブルのみ出力されていました。
幸い、それぞれdivではさんでいましたので、
こちらのサイトを参考に、divで絞ってテーブルを指定してみました。
Beautiful Soupを使ってスクレイピング
<div id="hoge">
<table>
<tr>
<td>
<div class="name">fugaの里</div>
</td>
<td>
<div class="button"><a href="fuga.html"><div>
</td>
</tr>
</table>
</div>
# テーブルを指定
div = bsObj.find('div',id="results_list")
table = div.select_one("table")
rows = table.findAll("tr")
だけどリンク先が表示されません。
リンク先は別途取得するみたいです。
with open("ebooks.csv", "w", encoding='utf-8') as file:
writer = csv.writer(file)
for row in rows:
csvRow = []
for cell in row.findAll(['td', 'th']):
csvRow.append(cell.find(class_="name").get_text())
csvRow.append(cell.find(class_="button").get('href'))
writer.writerow(csvRow)
できました!
スクレイピングしたら簡単かと思ってましたが、手作業の方が早かったかな・・・?
(所要時間 90分)