Scrapy Shell返回空列表求助:无法抓取gol.gg指定页面数据
解决Scrapy抓取gol.gg页面无结果的问题
首先排查核心原因:这个网站的比赛数据是JavaScript动态渲染的,Scrapy默认抓取的是服务器返回的原始HTML,里面没有你要的内容,所以用css/xpath解析会返回空。
给你几个实用的解决步骤:
- 先确认动态加载:在Scrapy Shell里输入
response.text,然后搜索页面上可见的关键词(比如某个选手ID、比赛数据),如果搜不到,就说明数据是JS加载的。 - 优先抓API接口:打开浏览器F12→Network→XHR/Fetch标签,刷新页面,找返回JSON格式的请求(通常URL里带
api、stats或者数字ID)。找到后直接用Scrapy请求这个API地址,解析JSON数据就行,比渲染页面高效得多。 - 用渲染工具处理动态内容:如果找不到API,就用Scrapy配合Playwright渲染JS:
- 安装依赖:
pip install scrapy-playwright - 启动带Playwright的Scrapy Shell:
scrapy shell -s DOWNLOAD_HANDLERS='{"http": "scrapy_playwright.handler.ScrapyPlaywrightDownloadHandler", "https": "scrapy_playwright.handler.ScrapyPlaywrightDownloadHandler"}' -s TWISTED_REACTOR='twisted.internet.asyncioreactor.AsyncioSelectorReactor' https://gol.gg/game/stats/43023/page-game/ - 在Shell里执行
await page.content()获取渲染后的页面内容,再用css/xpath解析。
- 安装依赖:
- 检查反爬设置:Scrapy默认的User-Agent可能被拦截,启动Shell时可以指定UA:
scrapy shell -s 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' https://gol.gg/game/stats/43023/page-game/
内容的提问来源于stack exchange,提问作者Borgiven
相关产品推荐
相关产品推荐

