【Python】スクレイピングで検索結果のタイトルとURLを抽出

Pythonを使ってGoogleから特定キーワードで検索した結果のタイトルとURLを自動抽出するプログラムを勉強したので、備忘録がてら記事にしたいと思います。

今回実施した環境は Anaconda pythonのバージョンは3.6.10です。

スクレイピングの記事は以前にも書いてたので参考までに掲載しておきます。

プログラム全体

前回はPythonのモジュールである”BeautifulSoup“を使用しておりましたが、今回は別のモジュールである”selenium“というものを使用しました。seleniumのモジュールをインストールしていない場合は以下のコマンドをAnaconda promptで入力すればインストールできます。

今回作成したプログラムの内容は主にこちらのサイトこちらのサイトを参考にしております。そして最近のアップデートのせいかわかりませんが、そのとおりにコピーしてもうまく作動しなかったのですこし改良して動くようにしました。

まずすべてのソースを以下に記載します。

出力される”title.txt”と”link.txt”の中身はこんな感じです。うまくできました。

プログラムの流れは以下のとおりです。

Googleを起動

検索ワード「底辺動物」で検索

指定ページ数に到達するまでタイトルとサイトURLを取得

取得したタイトルとサイトURLをテキストファイルに出力

以上です。

詳しい解説は参考サイトに記載があるため今回は細かい改良点行き詰まった点を記載します。

chromedriverのダウンロード

今回は自動でgoogle検索するために”chromedriver“というものを使用しています。

chromedriverはこちらのサイトでダウンロードできます。

注意するのはダウンロードするバージョンです。普段使っているGoogleChromeと同じバージョンをダウンロードします。

普段使っているGoogleChromeのバージョンは以下の通り設定のChromeについてから確認できます。

クロームの設定画面

これを同じにしないとエラーが発生したので注意しないと行けないと思います。

そしてプログラム11行目の通りダウンロードしたディレクトリを参照します。

Driverのoption

ドライバーオブジェクトを作成するときにoptionをつけると色々なオプションが使用できます。上記のプログラムではコメントアウトしていますが、コンソールにデバッグログを表示させない以下のものや、

Chromeがいちいち起動するのが煩わしい際に使用できる以下のヘッドレスモードもあります。

タイトルclassの取得

今回行き詰まったのはタイトルのclassの取得です。これは調べたとおりには行かずChromeの検証から調べました。プログラムの以下の部分です。

調べ直した結果以下の通りタイトルが入っていたのは”LC20lb DKV0Md“というclassでした。

classを取得するには以下のコマンドを使います。

ただしこれではうまくいきません。classに空白がある場合は”css_selector“というものを使うみたいです。”selenium”のアップデートで変わったとか?

修正したものが今回のプログラムで使っているものです。class名の前に”.”をつけ空白は”.”で置き換えます。

これでうまくいきました!やれやれ😢

まとめ

ひさびさにPythonでスクレイピングやってみました。初心者ですが、やっぱり楽しいですね(*^^*)

スクレイピングできれば、色々作業も捗りそうですね!

またちょこちょこやっていきたいです。

まとめ
  • chromedriverのバージョンに注意
  • driverのオプション機能は割と使える
  • classの取得方法に注意

参考サイト

コメント

タイトルとURLをコピーしました