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

Scrapy爬虫执行后生成空文件,Crawled(200)问题求助

Scrapy爬虫返回空文件的排查方案

1. 验证Selector解析规则是否匹配

直接打开目标URL,右键查看页面源码,对照你写的XPath/CSS选择器,确认能否定位到产品数据——很多时候网站DOM结构会调整,类名、标签层级和你写的规则不匹配。
用Scrapy Shell快速测试效率更高:

scrapy shell https://listado.mercadolibre.cl/animales-mascotas/caballos/

在shell里输入你的选择器,比如response.xpath('//div[@class="item__info"]'),如果返回空列表,说明选择器写错了,需要重新调整。

2. 排查页面是否为JS动态加载

日志显示爬取状态200,但如果页面内容是通过JavaScript动态渲染的,Scrapy默认的下载器只能获取静态HTML,无法拿到JS加载后的产品数据。
对比浏览器页面源码和Scrapy返回的内容:在shell里输入response.text,搜索页面上可见的产品名称,搜不到的话就说明是动态加载场景,需要用scrapy-splash或者playwright这类工具处理JS渲染。

3. 检查Item字段赋值逻辑

就算选择器能定位到数据,要是赋值时漏了提取文本(比如只写response.xpath('//span[@class="price"]'),没加/text().get()),或者字段名拼写错误,也会导致Item为空。

4. 确认导出配置与Pipeline设置

检查settings.py里的FEEDS配置,确认文件路径、格式是否正确:

FEEDS = {
    'caballos.csv': {
        'format': 'csv',
        'encoding': 'utf-8',
        'overwrite': True
    }
}

如果没开启FEEDS或者路径写错,会直接生成空文件。另外也要确认Item Pipeline是否正常启用,避免数据被Pipeline过滤掉。

5. 排查反爬限制

虽然返回状态200,但网站可能通过User-Agent、Cookie等限制爬虫,导致返回的页面无有效数据。可以在settings.py里设置模拟浏览器的UA:

USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'

也可以从浏览器复制当前网站的Cookie,加到Scrapy的请求头里测试。

内容的提问来源于stack exchange,提问作者Héctor Garrido

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 15:45:41