51359


ページが複数あるサイトのスクレイピングをしようと、下記のようなコードを書きました。  
1ページ目を取得して色々処理した後、「e」の入力がなければ2ページ目～...と無限に繰り返すようなwhile文です。

[code]

    import requests
    import webbrowser
    from bs4 import BeautifulSoup
    
    targetSite = "http://abc.com/"
    
    def getHtml(url):
        response = requests.get(url)
        response.encoding = response.apparent_encoding
        return BeautifulSoup(response.text, 'lxml')
    
    
    pageNum = 1
    while True:
        html = getHtml(targetSite+"page/"+str(pageNum))
    
        ~~~~略~~~~
    
        inp = input("END?(e) >> ")
        if inp == "e" : break
        else:
            pageNum += 1
    
[/code]

しかし、2ページ目以降の処理になっても1ページ目のhtmlを取得しているようです。

試しにページ番号を固定にしてみたところ、ちゃんと取得できていました。

[code]

    getHtml(targetSite+"page/"+str(5))
    
[/code]

自分で調べてみてもよく分からなかったため質問させていただきました。  
解決方法がありましたら、ご回答のほどよろしくお願い致します。


CC BY-SA 4.0
2018-12-19T12:36:43.070
51355
2018-12-19T15:07:37.410
30065
question
python beautifulsoup
BeautifulSoup4での複数ページスクレイピング


まず、print関数で値が変わっているか確認しましょう


CC BY-SA 4.0
2018-12-19T15:07:37.410
51359
2018-12-19T15:07:37.410
31519
51355
answer