前提・実現したいこと
プログラミング初心者です。
pythonで「指定したワードをchromeで検索し、その結果のうち上位5件のページを開く」という
プログラムを書いていますが上手くいきません。
(「退屈なことはpythonにやらせよう」という本で勉強しており、その11章の内容をほぼ丸写ししています。)
実行したところ、ページが一つも表示されず困っています。
発生している問題・エラーメッセージ
link_elems("soup.select('.r a')"の結果)が空リストになる。
該当のソースコード
python
1import requests, sys, webbrowser, bs4 2 3print('Google...') # Googleページをダウンロード中にテキストを表示 4res = requests.get('http://google.com/search?q=' + 'weather') # 天気について検索 5res.raise_for_status() 6 7# TODO: 上位の検索結果のリンクを取得する 8soup = bs4.BeautifulSoup(res.text) 9link_elems = soup.select('.r a') 10 11# TODO: 各結果をブラウザのタブで開く(最大5ページ) 12num_open = min(5, len(link_elems)) 13for i in range(num_open): 14 webbrowser.open('http://google.com' + link_elems[i].get('href'))
試したこと
デバッガで調べたところlink_elemsが空リストになっていることが問題のようですが、その理由がわかりません。
res.textをテキストファイルに書き出して、「class="r"」で検索しましたが見つからないので、
requests.getが上手く働いていないような気がします。
また原因に関係するかわかりませんが、上記の本では「<h3 class="r">」の要素を抜き出すと書いてある一方で、
chromeの「検証」で見た限りでは「<div class="r">」になっています。
補足情報(FW/ツールのバージョンなど)
googleはスクレイピング禁止のはずですよ。
回答2件
あなたの回答
tips
プレビュー