前回はWEB上のデータを取得作業を行いました。しかし、スクレイピングで抜き出したWebデータはHTMLタグがいっぱいあって人間が見るとかなり見にくいです。そこで今日は取得したデータを見やすいように整形していきます。
PythonでのHTMLの分析にはBeautiful Soup
PythonでHTMLデータを分析するには「beautiful soup」というライブラリーが便利です。「Beautiful Soup」とは、「requests」で取得したHTMLデータを解析するためのライブラリです。「Beautiful Soup」にはHTMLを解析するための様々なメゾットやセレクタがあるためより効率的に解析することができます。
BeautifulSoupのインストール
コマンドプロンプトから「 pip install beautifulsoup4 」でインストールします。そして、「from bs4 import BeautifulSoup」でインポートします。
BeautifulSoupの使い方
yahoo=BeautifulSoup(r.text,'html.parser')
二つ目の引数は解析の種類を表しています。他にもあるみたいですが効率を気にせずとりあえず解析してる俺スゲーしたいってだけならこれで問題ないと思います。そしてBeautifulSoup が返してくれる変数には検索しやすいメソッドが含まれています。find()は引数で指定したタグを検索して最初にヒットしたものを返してくれます。
>>> yahoo.find(‘a’)
<a href=”https://www.yahoo-help.jp/“><nobr>ヘルプ</nobr></a>
他にも画像を検索したいときは(‘img’)にするとできます。そして、全部検索したいときはfind_all()を使います。検索結果はリストで返されます。
>>> yahoo.find_all(‘a’)
[<a href=”https://www.yahoo-help.jp/“><nobr>ヘルプ</nobr></a>, <a href=”https://www.yahoo-help.jp/app/answers/detail/p/533/a_id/43883“>Internet Explorerの互換表示について</a>, <a href=”https://tourdetohoku.yahoo.co.jp/storyteller/2018/“>被災地・宮城で聞いた「未来につなげたい思い」とは</a>, <a href=”https://rdsig.yahoo.co.jp/smptop/event/201803_bousai/pctl/RV=1/RU=aHR0cHM6Ly9ib3VzYWkueWFob28uY28uanAvcHIvMjAxODAzLw–“>あなたの防災力は何点?「全国統一防災模試」に挑戦</a>,
大体使うのはリンク(a)・画像(img)・表/テーブル(table) でしょう。ループを組み合わせると自動化処理ができますね。