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

Scrapy爬虫抓取700+条目但实际仅245条的问题排查求助

问题分析与解决方案

核心问题

目标仅245条数据,但爬虫抓取700+条目,根源在于:

  • 请求URL的page-size递增但offset固定为0,导致每个请求返回的结果包含之前所有页面的数据,引发重复抓取
  • CLOSESPIDER_ITEMCOUNT设置值略低于目标数量,且重复数据触发停止逻辑时,实际有效数据未达标

可行解决方案

1. 修复分页请求逻辑

原请求中offset=0固定不变,page-size从36递增到240,每个请求都会返回前N条数据(N=page-size),导致大量重复。应改为固定page-size为36,递增offset,每次请求下一页的新数据:

修改start_requests方法:

def start_requests(self):
    # 245条数据,每页36条,需要8页(36*7=252 ≥245)
    for offset in range(0, 252, 36):
        yield scrapy.Request(
            url=f"https://www2.hm.com/en_us/men/new-arrivals/view-all/_jcr_content/main/productlisting.display.json?sort=stock&image-size=small&image=model&offset={offset}&page-size=36",
            method='GET',
            callback=self.parse
        )

2. 调整CLOSESPIDER_ITEMCOUNT配置

目标是245条数据,将setting.py中的值调整为245或稍大,确保抓取完所有目标数据后停止:

CLOSESPIDER_ITEMCOUNT = 245

3. 添加数据去重机制

在爬虫中维护已抓取的articleCode集合,避免重复生成Item:

修改parse方法:

def __init__(self, *args, **kwargs):
    super().__init__(*args, **kwargs)
    self.processed_articles = set()  # 存储已处理的articleCode

def parse(self, response):
    json_resp = json.loads(response.body)
    products = json_resp.get('products')
    for product in products:
        article_code = product.get('articleCode')
        if article_code in self.processed_articles:
            continue
        self.processed_articles.add(article_code)
        
        loader = ItemLoader(item=HmsItem())
        loader.add_value('title', product.get('title'))
        loader.add_value('articleCode', article_code)
        loader.add_value('category', product.get('category'))
        loader.add_value('src', product.get('image')[0].get('src'))
        loader.add_value('price', product.get('price'))
        loader.add_value('swatchesTotal', product.get('swatchesTotal'))
        loader.add_value('brandName', product.get('brandName'))
        yield loader.load_item()

验证效果

  1. 运行爬虫后,每个请求仅返回36条新数据,无重复
  2. 抓取到245条数据后,爬虫自动停止
  3. 即使接口返回重复数据,去重机制也会过滤掉已处理条目

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 16:55:45