pythonでGoogle検索の結果をbeautifulsoupでスクレイピングして、
タイトルとURLのセットを取得して表示させてみます。
import requests
import bs4
# キーワードを使って検索してhtmlを取得する
keyword = 'python'
response = requests.get('https://www.google.co.jp/search?q=' + keyword)
# ステータスコードが200以外なら例外を発生させる
response.raise_for_status()
# 取得したHTMLをパースする
bs = bs4.BeautifulSoup(response.text, "html.parser")
# 検索結果のタイトルとリンクを取得
element = bs.select('.r > a')
title_list = []
url_list = []
for i in range(len(element)):
# タイトルのテキスト部分のみ取得
title = element[i].get_text()
# リンクのみを取得し、余分な部分を削除する
url = element[i].get('href').replace('/url?q=','')
title_list.append(title)
url_list.append(url)
# 出力
for i in range(len(title_list)):
print(title_list[i])
print('['+ url_list[i] +']')
print('')
実行結果
Welcome to Python.orgPython - ウィキペディア https://www.python.org/&sa=U&ved=0ahUKEwjFrcXw1bjfAhUS0lQKHdHNAVUQFggUMAA&usg=AOvVaw1-NvLH6Tv0rGldN36ibIt4プログラミング言語 Python https://ja.wikipedia.org/wiki/Python&sa=U&ved=0ahUKEwjFrcXw1bjfAhUS0lQKHdHNAVUQFggfMAE&usg=AOvVaw3jLHvUDBY5ke7FmiuKTMrNPython チュートリアル — Python 3.6.5 ドキュメント 404 Not FoundPython - Qiita 301 Moved PermanentlyPython本まとめ・2019年版 - Webとデータ分析を初心者が仕事にするまで 404 Not Found - Qiita - Qiita今さら聞けない!Pythonとは【初心者向け】 | TechAcademyマガジン Entry is not found - Lean BaseballNo Engineering, No Baseball.なぜPythonはこんなにも遅いのか? | POSTD 301 Moved Permanently専門知識いらず!Pythonとは何かを言語の特徴から網羅的に徹底解説 ... POSTD | ニジボックスが運営するエンジニアに向けたキュレーションメディアPOSTD は、ニジボックスが運営する、エンジニアに向けたキュレーションメディアです。ニジボックスはWebサービスの企画、制作、開発、運用を一貫して担うリクルートの100%子会社です。 リクルートグループのオンラインサービスをはじめ、様々な業種・業界・業態のサービス開発を行っております。Python入門 〜Pythonのインストール方法やPythonを使った ... Page not found | 侍エンジニアブログ 404 File Not Found
解説
下記は、class=’r’を使っているタグの内側で使われているaタグで囲まれている内容を取ります。
element = bs.select('.r > a')
element[0]の中身の例
<a href="/url?q=https://www.python.org/&sa=U&ved=0ahUKEwj9nfff17jfAhUICjQIHXerBOkQFggUMAA&usg=AOvVaw2S32M1LB2og9X0Ed6Q3cu1">Welcome to <b>Python</b>.org</a>
そして下記でタグを除去してタイトルのテキスト部分のみを取得できます。
title = element[i].get_text()
urlの取得は、get()でhrefの属性のデータを取るように指定して、余計な文字を除去しています。
url = element[i].get('href').replace('/url?q=','')
これでタイトルとURLが取得できました
参考
PythonのrequestsとBeautifulSoupでGoogle検索結果から、タイトルとURLと説明文だけを抜き取る


