webbrowseropenを2重forループしようとすると失敗する?
webbrowseropenってなに?
pythonではwebbrowseropenというモジュールを使うことによってブラウザを開くことができます。
プログラムコードの解説
問題はこのwebbrowseropenでforループの二重ループが使えないことです。
例をみてみましょう。
import requests, sys, webbrowser, 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) 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'))
4行目で’&start=0’と最後につけているのがおわかりいただけますでしょうか。これはグーグルの1ページ目を表しています。つまり、ページ数文字列をリストにしてforループで回せばよいのではないかと思ったのです。
- pagelist = [‘1’, ‘2’, ‘3’]
- for page in pagelist:
このようにすることで二重ループを使ってwebbrowser.openもループしようとしました。しかしデバッグした結果。二重ループの先に進めませんでした。原因はわかりません。
しかし、別に実現不可能というわけではありません。ただ単に長いコードを3つおけばいいだけです。品質は悪いですが、一応次ページ分も一気に開けるという情報でした。