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

Scrapy爬虫无报错关闭未完成分页爬取,数据量远低于预期是什么原因

问题原因

  1. 分页URL拼接错误是直接原因
    你在构造下一页地址时,手动在基础URL末尾加了固定的p1,再拼接从页面获取到的next_page值,比如页面返回的下一页href是p2,你最终构造的URL会变成https://www.vivanuncios.com.mx/s-venta-inmuebles/queretaro/v1c1097l1021p1p2,属于无效地址。网站会自动重定向到有效分页或者返回无下一页标识,导致爬虫判定没有后续分页,正常结束运行。
    从日志也能验证:总共只发起了15次请求,爬取到420条数据,刚好对应单页28条的总量,说明后续分页请求全部无效,没有生成有效请求。
  2. 代码还存在xpath取值错误的隐藏问题
    bathrooms和link字段的xpath开头用了全局匹配的//,没有加.限定在当前房源节点下,每次取到的都是整个页面第一个匹配的元素,所有房源的这两个字段都会重复,和实际数据不符。
  3. 和UA、被封禁无关联
    所有请求返回状态码都是200,没有出现403、429、503等反爬封禁类的状态码,你已经配置了UA且确认HTML结构无变化,完全是代码逻辑错误导致的问题。

修复方案

def parse(self, response):
    homes = response.xpath("//div[@id='tileRedesign']/div")
    for home in homes:
        yield {
            'price': home.xpath("normalize-space(.//span[@class='ad-price']/text())").get(), 
            'location': home.xpath(".//div[@class='tile-location one-liner']/b/text()").get(), 
            'description': home.xpath(".//div[@class='tile-desc one-liner']/a/text()").get(),
            # 修正为相对路径匹配
            'bathrooms': home.xpath(".//div[@class='chiplets-inline-block re-bathroom']/text()").get(), 
            'bedrooms': home.xpath(".//div[@class='chiplets-inline-block re-bedroom']/text()").get(),
            'm2': self.remove_characters(home.xpath("normalize-space(.//div[@class='chiplets-inline-block surface-area']/text())").get()),
            # 修正为相对路径匹配
            'link':home.xpath(".//div[@class='tile-desc one-liner']/a/@href").get()
        }
        
    next_page = response.xpath("//a[@class='icon-pagination-right']/@href").get()
    if next_page:
        # 用scrapy自带的urljoin方法拼接,避免手动拼接前缀出错
        absolute_url = response.urljoin(next_page)
        yield SeleniumRequest(
            url=absolute_url,
            wait_time=3,
            callback=self.parse
        )

你可以在构造完absolute_url后加一行打印代码,确认拼接后的地址是否可以正常访问,方便后续排查问题。

内容的提问来源于stack exchange,提问作者cesalomx

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:24:03