webbrowseropenってなに?
pythonではwebbrowseropenというモジュールを使うことによってブラウザを開くことができます。
webbrowseropenが2重ループで機能しなかった
問題はこのwebbrowseropenでforループの二重ループが使えないことです。
例をみてみましょう。
import requests import sys import webbrowser import bs4 print('【1】googling...') # ダウンロード中 res = requests.get('https://www.google.co.jp/search?q=' + ' '.join(sys.argv[1:]) + '&start=0') res.raise_for_status() soup = bs4.BeautifulSoup(res.text, 'html.parser') link_elems = soup.select('.r a') num_open = min(10, len(link_elems)) for i in range(num_open): webbrowser.open('https://www.google.co.jp' + link_elems[i].get('href'))
6行目で’&start=0’と最後につけているのがおわかりいただけますでしょうか。これはグーグルの1ページ目を表しています。つまり、ページ数文字列をリストにしてforループで回せばよいのではないかと思ったのです。
ちょっと極端な例になりますが以下のようにしようとしました↓
pagelist = ['1', '2', '3']
for page in pagelist:
res = requests.get('https://www.google.co.jp/search?q=' + ' '.join(sys.argv[1:]) + '&start=' + page)
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, 'html.parser')
link_elems = soup.select('.r a')
num_open = min(10, len(link_elems))
for i in range(num_open):
webbrowser.open('https://www.google.co.jp' + link_elems[i].get('href'))
このように二重ループを使ってwebbrowser.openを使用してブラウザを開こうと思ったのですがデバッグした結果。二重ループの先に進めませんでした。原因はわかりません。
まとめ
pythonのwebbrowser.openは二重ループでは機能しませんでした。
コメント