Pythonのwebbrowseropenモジュールで二重forループは使えないのか?

スポンサーリンク

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

コメント

タイトルとURLをコピーしました