【Python】Google検索をPythonで自動化してみた

この記事をシェアする

 

はじめに

今回はグーグル検索をPythonで自動化する方法を記事にしたいと思います。

検索結果の上位5つをそれぞれ別タブで開くプログラムです。

 

プログラムを作っていこう!

まず、グーグル検索がどのような仕組みで構成されているか確認する必要があります。

「医学部」と検索してみて調べてみます。

f:id:Medicmed:20180607210623p:plain

このURLを見る限り

①「"https //www.google.com/search?client=ubunt&channel=fs&q="」

②「検索したキーワード」

③「"&ie=utf-8&oe=utf-8"」

の3つで構成されていることが分かります。

f:id:Medicmed:20180607211104p:plain

次に、HTMLの構成を確認します。

Firefoxだと「要素の検証」を選択してHTMLを確認することができます。

「医学部-Wikipedia」の構成を確かめてみると、"r"クラスの<a>タグに欲しいリンク先のURLがあることがわかりました。

事前調査が済んだのでプログラムを作っていきます。

 

ターミナルを起動させよう!

f:id:Medicmed:20180607210214p:plain

nanoエディタを使用してプログラムを書いていきます。

 

完成したプログラムはこちら!

f:id:Medicmed:20180607210425p:plain

最初の構成要素を"head"という変数に格納し、末尾の部分を"tail"という変数に格納しました。

手順としては、

①requestsモジュールのget()メソッドを使用してウェブページを取得してくる

②ちゃんとオブジェクトが取得できているかどうかを"raise_for_status"でエラーチェックします。取得できていない場合にはエラーを吐いてくれます。

③取得してきたHTMLのテキスト属性を"text"という変数に格納します。

④BeautifulSoupを使用してパースします。

CSSセレクタであるselect()を使用して"r”クラスの<a>要素だけを抜き出し、それらを"link_url"変数に格納します。

⑥検索結果の上位5つを開くためにwebbrowserモジュールを使用します。"http//google.com"という基本部分を"base"という変数に格納しておきます。

⑦検索結果が5つに満たない場合も考えられるため、min()関数を使用します。

⑧for文で回して、baseと取得してきたHTMLのhref属性の内容を連結してwebbrowserモジュールのopen()メソッドで開いていきます。

 

プログラムを起動させよう!

f:id:Medicmed:20180607214943p:plain

「医学部」を検索したいので、引数に医学部を渡します。

"Now Loading"と表示され、検索できているとプロンプトが返ってきます。

ウェブブラウザが自動的に起動し、このように上位5つの検索結果を一気に表示してくれます。

f:id:Medicmed:20180607220807p:plain

ウェブブラウザを立ち上げて、検索するよりも圧倒的に速いです。

ぜひ参考にしてみてください。

終わり。

 

 

今回参考にした書籍はコチラ!
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

 

 

合わせて読みたい記事!

www.medicalmed.press