PythonでGoogle検索順位スクレイピング/BeautifulSoupの使い方



この記事ではBeautifulSoupの使い方を説明するとともに、実践としてPythonでGoogle検索順位をスクレイピングするまでのやり方を紹介していく。


スクレイピングとは英語でscrapingとも書くように、「こすること」「削ること」の意味である。
つまり、サイトのHTMLやXMLからデータを抽出することをWebスクレイピングと読んでいる。

Pythonでスクレイピングする大まかな手順は次の通り。

  • 1. urllibでHTMLを丸ごとダウンロード
  • 2. BeautifulsoupでHTMLをオブジェクト化
  • 3. Beautifulsoupで目的のタグ内のテキストなどを抽出


この記事ではBeautifulSoupの使い方を説明するとともに、最終的にPythonでGoogle検索順位をスクレイピングするまでのやり方を紹介していく。Beautifulsoupを使えばグッとスクレイピングの手間とハードルを下げることができる。スクレイピングと聞くだけでアレルギー反応を起こしていた方も、Beautifulsoupを知ってしまえばその常識を覆されることだろう。

それではさっそく、スクレイピングの世界へ足を運んでいこう。
(本記事のプログラムはPython3で動作するものとする。)






BeautifulSoupのインストール


まずはBeautifulSoupをpipでインストール。
BeautifulSoup最新版がbeautifulsoup4なので次のようにしてインストールしておく。

$ pip3 install beautifulsoup4


サイトタイトルを抽出(スクレイピング)してみよう


細かい説明は抜きにして大雑把なイメージをつかむためにも、適当にサイトのtitleタグをスクレイピングしてみよう。

次のようにめちゃくちゃ簡潔なプログラムでサイトのタイトルを抽出できる。




BeautifulSoupの使い方


さきほどのプログラムがあまりに簡単だったので拍子抜けしたかもしれない。
もう少し詳しくBeautifulSoupの使い方を説明してみよう。

HTMLをオブジェクト化

HTMLテキストを soup = BeautifulSoup(html, 'html.parser') でオブジェクト化する。



特定のタグを見つける

たとえばaタグを見つけたい場合は、オブジェクト化した soup を使って soup.find_all('a') のようにして検索することができる。
そしてaタグが見つかれば、その結果が配列で返ってくる。

たとえばaタグの子要素にh3タグが入っている場合、スクレイピングは次のような感じ行う。

for a_tag in soup.find_all('a'):
    h3_tag = a_tag.select("h3")

    if len(h3_tag) > 0:
        ...




Googleのキーワード検索結果をスクレイピング


それではBeautifulSoupを使った実践的な例として、Googleの検索画面をスクレイピングしてみたので紹介する。
次のような手順でプログラムを組んで、特定のキーワードでの検索順位を取得する。


  • 1. urllibで検索結果のHTMLを取得
  • 2. BeautifulSoupでHTMLをオブジェクト化
  • 3. 特定のURLが結果に含まれているかチェック
  • 4. 含まれていなければ最大5ページまで繰り返し探す


以上の手順で書いたプログラムがこちら。

Google検索順位をスクレイピングするPythonプログラム




上記のプログラムをPython3で実行すると、検索順位が標準出力されるようになっている。
ios android シェア - Google 検索
順位: 2位


このプログラムをさらに改造して、検索したいキーワードをテキストファイルで管理し複数検索できるようにしたり、実行結果をエクセルで管理できるようにすればランキングツールのようなものを作ることができるだろう。


Python2年生 スクレイピングのしくみ 体験してわかる!会話でまなべる!

機械学習やデータ分析になくてはならない「データ」。このようなデータは、インターネット上に膨大にありますが、Pythonを使えば効率よくデータ収集できます。こうした手法を「スクレイピング」といいます。

KindleAmazon

あなたにおすすめ