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は二重ループでは機能しませんでした。


コメント