requestとbeautifulsoupを使って簡単なスクレイピングをしてみる

pythonでwebスクレイピング

以下の本を進めています。

簡単なスクレイピング

今回は以前買って放置してたudemyのpythonコースの中のワンセクションにあった、beautifulsoupを使ったスクレイピングをして本を進める前にイメージを掴みたいと思います。この単純なwebページを使ってスクレイピングを練習する。

コードの流れと説明

まず最初にターミナルで”jupyter notebook”とうち、jupyter notebookを起動。jupyter notebook上で書いて行く。今回は、サイトの「都市名」と「その説明」を抽出したい。

以下説明。まずはじめにrequestsモジュールをインポート。これでrequestsモジュール内の関数やクラスを使えるようになる。同時にbs4モジュールからBeautifulSoupクラスもインポートしておく。

requestsモジュールではHTTPメソッドを使うことができる。便利。ここではgetメソッド(要は検索とかする際にwebページ読み込んできてね、みたいな命令)をして、モジュールから具体的なオブジェクトを生成する。それをrに代入。

現状まだ具体的なデータがない状態なので、rにrequestsモジュールのcontentメソッド(バイナリ方式で取り出す)を使って中身を取り出す。次にbeautifulsoupを使って、この中身を分析する。その方法がhtml.parser。

こうしてわかりやすい形に整形したら、次にbeautifulsoupのfind_allメソッドを用いて、div、さらにその中のcitiesクラスのものを抜き出してくる。この時点ではまだ、リスト担っているので、for文を回して一つ一つ出力してあげる。この際にprintのカッコ内に少し注意が必要で、for文を回してもさらにそうして取ってきたdiv, class = citiesのデータがリスト形式ぽくなっているので、「その中のh2の0番目」「その中のpの0番目」のようなイメージで出力してあげる。

結果こんな感じで取れる。

London
London is the capital of England and it’s been a British settlement since 2000 years ago.
Paris
Paris is the capital city of France. It was declared capital since 508.
Tokyo
Tokyo is the capital of Japan and one of the most populated cities in the world.

シェアする

  • このエントリーをはてなブックマークに追加

フォローする