Google検索結果から、タイトルとURLと説明文だけを抜き取る/PythonでWebスクレイピング2018-01-17Google検索結果から、タイトルとURLと説明文だけを抜き取る/PythonでWebスクレイピングITな話題:TIPS・ノウハウ今回は、Google検索結果からタイトル・説明文とURLをぬきとって、CSVに整形して出力するところまでやります。手作業ではなく、pythonで一括処理します。pythonのrequestsとbeautifulsoupというモジュールを使います。なんとなく、かなり簡単にかけそうではありますので。(2013-11-19最終更新)問題はセレクタに与える条件です。Google検索結果のページを「ソースを表示」してみるとわかります。超複雑なHTMLになっていますので。これを地道に読むのは、ちょっと嫌かな・・。Chromeのデベロッパーツールを使うに限ります。検索結果画面のリンクのところにマウスカーソルを置いて右クリックメニューから「検証」を選びます。すると、デベロッパーツールが立ち上がり、該当箇所のURLが表示されて、対応する画面を反転して示してくれます。やって探すと、比較的見つけやすいです。タグ」で取得できそうです。pythonで検索実行しタイトル・URL・説明文を抜き取る機械学習にかける準備として、元にするCSVデータファイルを作成するところまで、とりあえずやります。outcsv.close()ひとつ、おことわり。自分は、IDLEでソースを表示させた状態で「F5」キーで実行する方法が好きなので、条件はソースに直書きしてます。コマンドラインから実行するなら、そこは入力させるか、パラメータで渡すようにしたほうが良いと思います。あと、ポイントだけ補足説明します。num=100の指定で検索結果を100件までリストします。resp.textでHTML全体が取得できるので、それをBeautifulSoupでパースします。そのうえで、class='r'の下のaタグ、class='s'の下のspanタグの内容を取得しています。.st')後は、aタグのリンクの部分(href=・・)を、get('href')で取り出して、そのままだと余分な「/url?q=」が頭にくっついているので、消してます。link_elem01[i].get('href').replace('/url?q=','')タイトルと説明文は、get_text()で取得します。しないと、<em>とか<strong>とかの修飾タグが取得できてしまって邪魔なので、純粋なテキスト部分だけを抜き取るわけです。link_elem01[i].get_text()link_elem02[i].get_text()あと、説明文には適当な位置に改行がはいっていて邪魔なので、それを消します。t02.replace('\r','')そうして、タイトルと説明文を連結してCSVに書き出しているだけです。出力したCSVはこんな感じです。一応、イケてるみたいです。補足ですご存じの方は多いと思いますが、Google検索は同じキーワードでも、検索結果が環境によって最適化されています。通常のブラウザで検索した時と、pythonのプログラムから検索した時とでは、当然のように同じ検索条件でも抽出されるものも並び順も違います。これを意識せずにやると、結果の確認のところでハマります。自分も、ハマりました。上記は、HTMLの書き方に依存しているので、なんかの拍子にGoogleさんが仕様を変えて問題が発生する可能性は常にあります。そんときはご容赦くださいね。今日のところはこんなもんです。検索スポンサーリンク最近のアクセスTOP5ブクマ数TOP3IT的なTIPS・ノウハウイベントログから抽出したログオン・オフ時刻を見やすいように整形するEXCELのVBAマクロなど。Google検索は利用するけど、アクティビティを保存させたくない時もある文字コードで悩まされるなんて久しぶり/JIS7(ISO-2022-JP)とJIS8の話もっと見る作業時によく参照する「まとめ」djangoテンプレート内でforループで回す時の整理とデフォルト辞書利用時の注意など。djangoテンプレート内ので条件分岐(IF文)で注意することなどをまとめておくdjangoテンプレート/変数の値の参照の仕方が、Pythonと違う所があるので整理しておく。service」とサーバーレスコンピューティング関係をまとめてみる。PWA・SPA・・など「最近のWEBアプリケーションの種類」をざっくりまとめる。文系的まとめディープラーニング(ニューラルネットワーク)の「学習」の肝は「微分」らしいよ。Consoleもっと見るディープラーニングのデモをやってみるWord2Vecで「単語の足し算・引き算の結果(単語)を取得する」デモをやってみる。API」で入力文の疑わしい部分をAIが指摘するデモを作る。classで事前学習済のVGG16モデルを使った画像識別クラス/tensorflow2.0(tf.keras)ランダムフォレストで回帰してみる/気象情報と電力データその2もっと見るPythonでWebアプリやってみるviews.py(python)からデータを渡して、Chart.jsでRaderチャートを描く/Chart.js+djangoWEBブラウザ上にドラッグ&ドロップした画像ファイルをBase64に変換して表示するWEBブラウザで手描きしたイメージをJPEG・PNG変換後Base64エンコードするもっと見るPythonで自動化やってみるWebアプリケーションで自動的に値を参照、スクロール他Tips/Selenium&pythonWebアプリケーションで自動的に何かをクリックするTips/Selenium&pythonWebアプリケーションへの自動入力・選択のTipsあれこれ/Selenium&pythonもっと見るPythonで数学・グラフィックスやってみるモンティ・ホール問題で、ちょっと暇つぶし。最近、台風が怖すぎる!!!生産性向上しろと言いながら、片方で足をひっぱるなんて・・と呆れてます。/軽減税率のニュースを見てもっと見るBOKU62歳の文系SE”BOKU”です。<arakan_no_boku@yahoo.co.jp>興味の向いたものを、つまみ食い的に勉強してます。自分が消化した内容を、頭の整理と備忘を兼ねてブログに書いてます。IT系・・特に機械学習・プログラムネタが中心ですが、IT以外のネタになる時もあります。(43)スポンサーリンクはてなブログをはじめよう!arakan_no_bokuさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。