【Scrapy 框架】「版本2.4.0源码」链接提取器(Link Extractors) 详解篇

全部源码解析文章索引目录传送门

【Scrapy 框架】版本 2.4.0 源码篇:全部配置目录索引

内容介绍

链接提取器是从响应中提取链接的对象。从对象LxmlLinkExtractor.extract_links返回匹配Link对象 的列表Response。链接提取器CrawlSpider通过一组Rule对象用于spider中。

实例化回调

def parse(self, response):
    for link in self.link_extractor.extract_links(response):
        yield Request(link.url, callback=self.parse)

链接提取器

from scrapy.linkextractors import LinkExtractor

LxmlLinkExtractor

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属性, 元件等,所以LinkExtractor默认条空间字符。设置strip=False将其关闭(例如,如果要从允许前导/后缀空格的元素或属性中提取网址)。

Link

class scrapy.link.Link(url, text='', fragment='', nofollow=False)

链接对象表示LinkExtractor提取的链接。

参数说明:

  1. url :锚标记中链接到的绝对URL。

  2. text :锚标记中的文字。

  3. fragment:网​​址中哈希符号后面的部分。

  4. nofollow :指示rel标记标签属性中是否存在nofollow值。

猜你喜欢

转载自blog.csdn.net/qq_20288327/article/details/113520529