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

Scrapy CrawlSpider未按预期抓取全部链接的问题与需求实现

解决Scrapy CrawlSpider递归抓取分类与产品页的问题

首先修正你的rules配置,不需要依赖URL正则模式,直接通过CSS选择器定位不同层级的链接来区分分类页和产品页,同时纠正restrict_css的写法错误:

name = 'recursiveSpider'
allowed_domains = ['industrialnetworking.com']

# 若不是特殊需求,建议保留默认去重器,避免重复爬取浪费资源
# custom_settings = {
#     'DUPEFILTER_CLASS' : 'scrapy.dupefilters.BaseDupeFilter',
# }
start_urls = [        
    'https://www.industrialnetworking.com/Manufacturers/Hirschmann'
]
rules = (
    # 规则1:抓取分类/子分类链接,继续递归跟进
    Rule(LinkExtractor(restrict_css='div.catCell a'), follow=True),
    # 规则2:抓取产品页链接,交给parse_new_item处理
    Rule(LinkExtractor(restrict_css='td.cellDesc h2 a'), callback='parse_new_item'),
)

关键说明:

  1. 分类链接处理:第一条Rule通过div.catCell a定位所有分类/子分类的a标签,follow=True让爬虫自动递归访问这些链接,深入下一层级页面。
    • 注意:restrict_css是用来定位包含链接的元素(即a标签),不需要添加::attr(href),Scrapy会自动提取a标签的href属性。你原来的写法会导致无法正确提取链接。
  2. 产品链接处理:第二条Rule仅提取产品页特有的td.cellDesc h2 a链接,这类链接指向最终的产品详情页,提取后直接调用parse_new_item函数处理产品数据。
  3. 去重器建议:除非有特殊需求,否则不建议禁用默认去重器,否则会导致爬虫重复爬取相同页面,浪费资源。

这样配置后,爬虫会自动遍历所有分类层级,遇到包含产品链接的页面时,就会提取并处理产品页,完全符合你想要的递归抓取逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:25:20