【BeautifulSoup】wikipediaのスクレイピング

こんにちは、のっくんです。

今日はPythonのrequestsとBeautifluSoupを使って、wikipediaの情報をスクレイピングしてみたいと思います。

スクレイピングする対象は以下のwikipediaのArtificial Intelligenceにします。

https://en.wikipedia.org/wiki/Artificial_intelligence

英語のページで字数も多いので、見るのが嫌になりそうなページです。

字数が多いですが、ビューティフルスープを使って高速にスクレイピングを体験できるので、最初の題材としては良いと思います。

海外のサイトでもwikipediaの情報をスクレイピングしているものが多いので、練習にはもってこいです。

Requestsを使ってWikipediaのページを取得する

まずは、必要なモジュールをインポートしましょう。

もしモジュールが見つからないエラーがでる場合は、パッケージ管理ソフトであるpipやcondaでインストールをしてください。

Googleの提供するGoogle Colaboratoryというクラウドで実行できる環境には予めパッケージが入っています。

次に、URLを指定して、ページの情報をゲットします。

うまくいくと、以下のコードでリターンコードを表示すると200番が表示されます。

404番が表示される場合には、URLが間違っている可能性がありますので確認しましょう。

ブラウザでURLを入力してページが表示されるか確認するのが1番よいです。

BeautifulSoupを使ってタグをスクレイピング

取得したHTMLの内容をテキスト情報にしてBeautifulSoupに渡します。

この時にHTMLパーサを指定するように引数に指定します。

ページの下の方にいくと、See Alsoという欄があり、そこに内部リンクが多数掲載されています。

Google Chromeで右クリックして「ページの検証」を押すと、タグ名と該当するエリアが半透明になります。

スクレイピングでは、この該当するエリアのタグ名が大事になります。

今回は、「div.div-col-columns.column-width」が必要な情報になります。

divタグの中に欲しい情報があることが分かったので、コードを書いていきます。

findを使って以上のdivタグの中身を取得します。

第二引数にはクラス名を指定します。

このときにアンダーバーを忘れないようにしましょう。

 

取得したデータはprintを使って確認できます。

 

リンクは、liタグの中のaタグの中のhref属性にあることが分かりました。

順番にスクレイピングしていきます。

まずは、liタグを取得しましょう。

liタグは複数あるので、find_allを使います。

 

そして取得したliタグの1つ1つからaタグのhref属性を抜き出し、リストに追加(append)していきます。

リンクのついでにテキスト情報も一緒にリストに追加します。

リストの中身は以下の通り。

内部リンクとテキスト情報を取り出すことができました。

ファイルに保存する

取得した情報は以下のコードでCSVファイルに保存することができます。

 

おわり。

ABOUTこの記事をかいた人

のっくん

理系院卒で大企業の研究所に就職。 趣味はプログラミング、レアジョブ英会話、筋トレ、旅行。 Twitter:@yamagablog