Scrapy shell中下一页链接的CSS selector返回空列表问题求助
Scrapy抓取book24.ru下一页链接空返回解决方案
问题原因排查步骤
- 首先确认静态响应是否包含目标DOM,在Scrapy Shell中执行以下命令验证:
print("pagination__button-item" in response.text) - 如果返回
False,说明分页元素是前端JavaScript动态渲染的,初始请求返回的静态HTML不存在对应结构,所以CSS选择器无法匹配到内容,这也是这类站点最常见的问题。 - 如果返回
True,说明是选择器写法有误,调整选择器规则即可。
对应解决方法
情况1:分页动态渲染(最常见)
优先选择接口抓包方案,性能更高不需要额外依赖:
- 打开浏览器开发者工具的「网络」面板,筛选XHR/ fetch请求,点击页面上的下一页按钮,观察触发的分页请求
- 通常这类列表翻页请求会携带
page参数,直接按照参数规则构造下一页请求URL即可,不需要解析页面元素。
如果必须解析页面元素获取链接,可以集成JS渲染工具: - 安装
scrapy-playwright依赖,配置Scrapy请求时开启JS渲染,等待页面元素加载完成后再执行选择器匹配,即可正常获取到下一页链接。
情况2:选择器写法有误
可以调整CSS选择器或者改用Xpath匹配,容错性更高:response.xpath('//li[contains(@class,"pagination__button-item") and contains(@class,"_next")]//a/@href').get()
内容的提问来源于stack exchange,提问作者Полина Ужвак
相关产品推荐
相关产品推荐

