gpt4 book ai didi

python - BeautifulSoup 循环遍历 url

转载 作者:行者123 更新时间:2023-12-02 06:48:02 24 4
gpt4 key购买 nike

我正在尝试收获一些国际象棋游戏,并在此处的一些帮助下完成了基础知识。主要功能如下所示:

import requests
import urllib2
from bs4 import BeautifulSoup

r = requests.get(userurl)
soup = BeautifulSoup(r.content)
gameids= []
for link in soup.select('a[href^=/livechess/game?id=]'):
gameid = link['href'].split("?id=")[1]
gameids.append(int(gameid))
return gameids

基本上发生的情况是我转到特定用户的网址,例如 http://www.chess.com/home/game_archive?sortby=&show=live&member=Hikaru,grab html 并抓取 gameid。这对于一页来说效果很好。然而,有些用户玩过很多游戏,由于每页只显示 50 个游戏,因此他们的游戏会列在多个页面上。例如 http://www.chess.com/home/game_archive?sortby=&show=live&member=Hikaru&page=2 (或 3/4/5 等)这就是我陷入困境的地方。我如何循环浏览页面并获取 id?

最佳答案

通过无限循环来跟踪分页,然后单击“下一步”链接,直到找不到为止。

换句话说,来自:

enter image description here

跟随“下一步”链接直到:

enter image description here

工作代码:

from urlparse import urljoin

import requests
from bs4 import BeautifulSoup

base_url = 'http://www.chess.com/'
game_ids = []

next_page = 'http://www.chess.com/home/game_archive?sortby=&show=live&member=Hikaru'
while True:
soup = BeautifulSoup(requests.get(next_page).content)

# collect the game ids
for link in soup.select('a[href^=/livechess/game?id=]'):
gameid = link['href'].split("?id=")[1]
game_ids.append(int(gameid))

try:
next_page = urljoin(base_url, soup.select('ul.pagination li.next-on a')[0].get('href'))
except IndexError:
break # exiting the loop if "Next" link not found

print game_ids

对于您提供的 URL ( Hikaru GM ),它会为您打印所有页面中 224 个游戏 ID 的列表。

关于python - BeautifulSoup 循环遍历 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27752860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com