Scrapy shell抓取techmoran创业文章仅返回30条,如何获取全部2880条?
原因说明
你在Chrome开发者工具中匹配到的2880条结果,是页面经过多次滚动加载/分页加载后生成的完整DOM数据。而Scrapy默认发起的是静态HTTP请求,仅能获取到该页面首次加载返回的第一页内容,刚好对应30条文章链接,所以才会出现两者匹配结果数量不一致的情况。
可行解决方法
- 方案一:遍历静态分页地址
该站点支持静态分页,翻页时的URL规则为https://techmoran.com/category/startups/page/页码/,按每页30条计算,总共有96页内容。你只需要遍历拼接page/1到page/96的分页URL,逐个请求后用你现有的XPath命令提取链接,就能汇总得到全部2880条结果。
你可以先在Scrapy Shell中测试请求第二页地址https://techmoran.com/category/startups/page/2/,执行原有XPath确认可以正常拿到30条链接,再编写批量爬取逻辑即可。 - 方案二:模拟浏览器动态渲染
如果遇到没有静态分页规则的纯JS动态加载站点,可以搭配Selenium、Playwright或者Scrapy Splash插件,模拟浏览器行为自动滚动页面触发所有内容加载,等完整DOM渲染完成后再执行XPath提取,就能直接拿到全量链接。
抓取过程中请控制请求频率,适当添加请求间隔和随机UA头,避免对站点服务器造成不必要的压力,也能降低被反爬策略拦截的概率。
内容的提问来源于stack exchange,提问作者nhamster
相关产品推荐
相关产品推荐

