You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

网页爬取第10页后无法找到表格行标签问题求助

问题排查与解决建议

1. 修正元素选择器

你当前用html.find_all('tr', id='row_')查找表格行,但实际页面中表格行的ID是row_加数字后缀(比如row_1001),而非完全等于row_。需改用正则匹配ID前缀:

import re

rows = html.find_all('tr', id=re.compile(r'^row_'))

2. 添加请求头绕过反爬

网站可能通过请求头识别爬虫,空请求头会导致第11页及以后返回异常内容。需模拟浏览器请求头,至少添加User-Agent:

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Accept-Language': 'en-US,en;q=0.5'
}

# 发起请求时带上headers
res = requests.get(rankings_url, headers=headers, timeout=30, allow_redirects=True)

3. 验证请求响应内容

先打印请求的状态码和响应文本片段,确认是否拿到了正常页面:

print(f"Status Code: {res.status_code}")
print(res.text[:500])  # 打印前500字符,判断是否为目标页面

如果返回反爬验证页面(含验证码、登录提示等),还需:

  • 添加请求间隔(比如time.sleep(2)),避免请求过于频繁
  • 使用会话保持(requests.Session()),模拟浏览器连续会话

4. 检查URL构造是否正确

确认URL_RANKINGS拼接后的第11页URL与浏览器中的一致:

URL_RANKINGS = "https://boardgamegeek.com/browse/boardgame/page/"
rankings_url = f'{URL_RANKINGS}{page}'
print(rankings_url)  # 应输出https://boardgamegeek.com/browse/boardgame/page/11

内容的提问来源于stack exchange,提问作者Tjorriemorrie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 14:41:14