「Scrapy 爬虫框架」链接提取器(Link Extractors) 详解

文章目录

  • 内容介绍
  • 链接提取器

内容介绍

开发环境为 Python3.6,Scrapy 版本 2.4.x ,爬虫项目全部内容索引目录

看懂Python爬虫框架,所见即所得一切皆有可能

本章带你学习基于 Python3Scrapy 爬虫框架 中数据爬取过程中链接提取器是从响应中提取链接的对象。从对象LxmlLinkExtractor.extract_links 返回匹配 Link对象的列表Response。链接提取器CrawlSpider通过一组Rule对象用于spider中。

代码内容基于「Scrapy 爬虫框架」源码版本 2.4.0 ,更新内容会进行标记说明对应版本。

# 实例化回调每一个链接信息
def parse(self, response):
    for link in self.link_extractor.extract_links(response):
        yield Request(link.url, callback=self.parse)

链接提取器

  • 1.LxmlLinkExtractor
from scrapy.linkextractors import LinkExtractor

class scrapy.linkextractors.lxmlhtml.LxmlLinkExtractor(allow=(), deny=(), allow_domains=(), deny_domains=(), deny_extensions=None, restrict_xpaths=(), restrict_css=(), tags=('a', 'area'), attrs=('href'), canonicalize=False, unique=True, process_value=None, strip=True)
"""
参数说明:
1.allow(str或list):URL必须匹配的单个正则表达式(或正则表达式列表)才能被提取。如果未指定(或为空),则它将匹配所有链接。
2.deny(str或list):URL必须匹配的单个正则表达式(或正则表达式列表)才能被排除(即不提取)。它优先于allow参数。如果未指定(或为空),则不会排除任何链接。
3.allow_domains(str或list):包含域的单个值或字符串列表,将在提取链接时考虑使用
4.deny_domains(str或list):包含域的单个值或字符串列表,将不会考虑提取链接
5.deny_extensions(list):包含扩展名的单个值或字符串列表,在提取链接时应将其忽略。如果未给出,则默认为scrapy.linkextractors.IGNORED_EXTENSIONS。包括7z,7zip,apk,bz2,cdr,dmg,ico,iso,tar,tar.gz,webm,和xz。
6.strict_xpaths(str或list):是一个XPath(或XPath的列表),定义了响应中应从中提取链接的区域。如果定义则仅扫描那些XPath选择的文本以查找链接。
7.strict_css(str或list):CSS选择器(或选择器列表),用于定义响应中应从中提取链接的区域。
8.limit_text(str或list):链接的文本必须匹配才能提取的单个正则表达式(或正则表达式列表)。如果未指定(或为空),则将匹配所有链接。如果给出了正则表达式列表,则如果链接至少匹配一个链接,则将提取该链接。
9.tags(str或list):提取链接时要考虑的标签或标签列表。默认('a','area')
10.attrs(list):查找要提取的链接时应考虑的一个属性或属性列表(仅适用于tags参数中指定的那些标记)。默认为('href')
11.canonicalize(bool):将每个提取的URL规范化(使用w3lib.url.canonicalize_url)。默认为False。canonicalize_url是用于重复检查的;它可以更改在服务器端可见的URL,因此对于具有规范化URL和原始URL的请求,响应可以有所不同。如果使用LinkExtractor跟踪链接,则保留默认值会更可靠canonicalize=False。
12.唯一(bool):是否应将重复过滤应用于提取的链接。
13.process_value(collections.abc.Callable):该函数接收从标记中提取的每个值和扫描的属性,并且可以修改该值并返回一个新值,或者返回None以完全忽略该链接。如果未给出,则process_value默认为。
14.strip(bool):是否从提取的属性中删除空格。根据HTML5标准,前导和尾部空格必须从被剥离href的属性以及许多其他的元素,src属性