Scrapy仅采集目标网页75%:如何提升采集完整性?
Scrapy采集G-Cloud数据缺失问题解答
问题1:修改AUTOTHROTTLE设置能否提升采集量?
这得看数据缺失的具体原因:
- 如果缺失是因为请求频率触发了网站反爬(比如部分请求被拦截、返回空白页或403错误),调整这两个参数可能有用:
- 当前
AUTOTHROTTLE_START_DELAY=0.5可能偏低,短时间内请求太密集容易被限制,试着调大到2-3,降低被反爬拦截的概率; AUTOTHROTTLE_MAX_DELAY=60过高的话,后续请求延迟太长,可能会因为网站会话过期或超时导致请求失败,可以适当降到20-30,同时配合调整CONCURRENT_REQUESTS这类并发参数。
- 当前
- 如果缺失是分页逻辑、页面加载异常等其他原因,光改这两个参数解决不了问题。
问题2:可能导致采集量偏低的其他因素
- 分页逻辑暗藏问题:
你觉得分页函数正常,但新网站的分页按钮可能有特殊情况:比如部分页面的next_pageXPath匹配失效(比如最后几页的按钮class变了、藏在动态加载内容里),导致爬取提前终止;还有可能部分汇总页实际产品数量不足30个,按每页30算总数量自然会有差距。 - 反爬机制拦截:
桌面IP连续爬15小时,很大概率会被网站限制IP,导致后面的页面请求失败,拿不到产品链接;新网站可能加了UA检测、Cookie验证或者JS渲染要求,你的Scrapy请求没模拟浏览器环境,部分页面返回不了有效数据。 - 请求失败没重试:
如果DOWNLOAD_TIMEOUT设得太短,或者RETRY_TIMES、RETRY_HTTP_CODES没覆盖500、503、403这类常见错误码,部分失败的请求直接被丢了,没重新发起请求补数据。 - 页面内容加载异常:
新网站的汇总页可能用了滚动加载这类动态加载方式,你的Xpath只抓了初始加载的链接,后面加载的产品没被采集;还有部分产品链接的位置或嵌套结构变了,你的Xpath没匹配到,导致漏抓。 - 爬取过程意外中断:
桌面运行15小时,中间可能遇到网络波动、程序崩溃、电脑休眠之类的情况,导致爬取没跑完,但你没注意到中断记录。
内容的提问来源于stack exchange,提问作者InSadly
相关产品推荐
相关产品推荐

