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

Python Requests请求TCG Player返回非预期响应,如何获取可爬取HTML?

TCG Player爬虫请求异常问题解析与解决

为什么返回的HTML和浏览器不一致?

  • 反爬机制识别非浏览器请求:Requests库默认的请求头(比如User-Agent为python-requests/x.x.x)会被网站反爬系统识别,网站会返回特殊页面(如人机验证页、简化版骨架页)而非正常内容。
  • 动态内容未被渲染:TCG Player可能依赖JavaScript动态加载页面内容,浏览器会自动执行JS生成完整HTML,但Requests仅能获取服务器返回的原始静态HTML,无法解析执行JS,因此拿到的是未渲染的基础框架。

如何获取可爬取的HTML?

1. 模拟浏览器请求头

给请求添加符合浏览器标准的请求头,让网站判定为浏览器访问,核心是设置User-Agent:

import requests

url = "http://www.tcgplayer.com"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
    "Accept-Language": "en-US,en;q=0.5"
}
response = requests.get(url, headers=headers)
print(response.text)

2. 处理动态渲染内容

如果添加请求头后仍无法获取完整内容,说明页面依赖JS渲染,需使用浏览器自动化工具(如Selenium、Playwright)模拟浏览器执行JS后获取页面:
以Selenium为例:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# 配置无头模式(可选,不打开可视化浏览器窗口)
chrome_options = Options()
chrome_options.add_argument("--headless=new")

# 初始化浏览器驱动
driver = webdriver.Chrome(options=chrome_options)
driver.get("http://www.tcgplayer.com")

# 获取渲染后的完整HTML
full_html = driver.page_source
print(full_html)

# 关闭浏览器
driver.quit()

3. 遵守爬虫协议

你查看的robots.txt规则含义如下:

User-agent: *
Crawl-Delay: 10
Allow: /
Sitemap: https://www.tcgplayer.com/sitemap/index.xml

  • 允许所有爬虫爬取全站内容,但要求两次请求间隔至少10秒,务必遵守该延迟要求,避免触发反爬或违反网站规定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:31:12