第六章 使用LinkExtractor 提取链接

本章节介绍如何在Scrapy中使用LinkExtractor来提取网页链接。LinkExtractor提供了更灵活的规则设置,如通过正则表达式筛选链接,限制提取特定域名的链接,以及指定CSS选择器和HTML标签等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用LinkExtractor 提取链接

提取链接的两种方法:

  • Selector
  • LinkExtractor

之前的代码是使用的Selector,这里就不再做介绍了,开始LinkExtractor的学习

1.使用LinkExtractor

from scrapy.linkextractors import LinkExtractor
# 提取链接
            # 下一页的url在 ul.pager > li.next > a 里面
            # next_url = response.css('ul.pager li.next a::attr(href)').extract_first()
            # if next_url:
            #     # 如果找到下一页的url,得到绝对路径,构造新的Response对象
            #     next_url = response.urljoin(next_url)
            #     yield scrapy.Request(next_url, callback=self.parse)
            le = LinkExtractor(restrict_css='ul.pager li.next')
            links = le.extract_links(response)
            if links:
                next_url = links[0].url
                yield scrapy.Request(next_url,callback=self.parse)
  1. 描述提取规则

LinkExtractor构造器参数:

  • allow
    接收一个正则表达式或一个正则表达式列表,提取绝对url与正则表达式匹配的链接。如果该参数为空(默认),就提取全部链接。
  • deny

    接收一个正在则表达式或一个正则表达式列表,与allow相反,排除绝对url与正则表达式匹配的链接。
    
  • allow_domains

    接收一个域名或一个域名列表,提取到指定域的链接

  • deny_domains

    猜到了吧,与allow_domains相反,排除指定域的链接
    
  • restrict_paths

    接收一个XPath表达式或一个XPath表达式列表,提取XPath表达式选中区域下的链接
    
  • restrict_css

    接收一个CSS选择器或一个CSS选择器列表,提取CSS选择器选中区域下的链接
    
  • tags

    接收一个标签/标签列表,提取指定标签内的链接,默认为 ['a','area']
    
  • attrs

    接收一个属性/属性列表,提取指定属性内的链接,默认为 ['href']
    
  • process_value

    接收一个形如func(value)的回调函数,如果传递了该参数,LinkExtractor将调用该回调函数对提取的每一个链接进行处理,回调函数正常情况下应返回一个字符串,想要抛弃所处理的链接时,返回None
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值