笨鸟编程-零基础入门Pyhton教程

 找回密码
 立即注册

链接提取器

发布者: 笨鸟自学网

链接提取器是从响应中提取链接的对象。

这个 __init__ 方法 LxmlLinkExtractor 获取确定可以提取哪些链接的设置。 LxmlLinkExtractor.extract_links 返回匹配的列表 Link 对象来自 Response 对象。

链接提取器用于 CrawlSpider 蜘蛛穿过一组 Rule 物体。

您也可以在普通的spider中使用链接提取器。例如,可以实例化 LinkExtractor 并从spider回调中使用它:

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

链接提取器引用

链接提取器类是 scrapy.linkextractors.lxmlhtml.LxmlLinkExtractor . 为了方便起见,它也可以作为 scrapy.linkextractors.LinkExtractor ::

from scrapy.linkextractors import LinkExtractor

LxmlLinkExtractor

classscrapy.linkextractors.lxmlhtml.LxmlLinkExtractor(allow=()deny=()allow_domains=()deny_domains=()deny_extensions=Nonerestrict_xpaths=()restrict_css=()tags=('a', 'area')attrs=('href',)canonicalize=Falseunique=Trueprocess_value=Nonestrip=True)[源代码]

LXMLlinkextractor是推荐的带有便捷过滤选项的链接提取程序。它是使用LXML的健壮的HTMLParser实现的。

参数
  • allow (str or list) -- (绝对)URL必须匹配才能提取的单个正则表达式(或正则表达式列表)。如果没有给定(或为空),它将匹配所有链接。

  • deny (str or list) -- 一个单独的正则表达式(或正则表达式的列表),(绝对)URL必须匹配才能被排除(即不提取)。它优先于 allow 参数。如果未给定(或为空),则不会排除任何链接。

  • allow_domains (str or list) -- 包含用于提取链接的域的单个值或字符串列表。

  • deny_domains (str or list) -- 包含域的单个值或字符串列表,这些域不会被视为提取链接的域。

  • deny_extensions (list) -- 提取链接时应忽略的包含扩展名的字符串的单个值或列表。如果未给出,则默认为 scrapy.linkextractors.IGNORED_EXTENSIONS . .. 版本更改::2.0 IGNORED_EXTENSIONS 现在包括 7z , 7zip , apk , bz2 , cdr , dmg , ico , iso , tar , tar.gz , webm 和 xz .

  • restrict_xpaths (str or list) -- 是一个xpath(或xpath的列表),它定义响应中应该从中提取链接的区域。如果给定,则只扫描由这些xpath选择的文本中的链接。见下面的例子。

  • restrict_css (str or list) -- 一个CSS选择器(或选择器列表),它定义响应中应该从中提取链接的区域。行为与 restrict_xpaths .

  • restrict_text (str or list) -- 链接文本必须匹配才能提取的单个正则表达式(或正则表达式列表)。如果没有给定(或为空),它将匹配所有链接。如果给出了一个正则表达式列表,那么如果链接与至少一个匹配,则将提取该链接。

  • tags (str or list) -- 提取链接时要考虑的标记或标记列表。默认为 ('a', 'area') .

  • attrs (list) -- 在查找要提取的链接时应考虑的属性或属性列表(仅适用于在 tags 参数)。默认为 ('href',)

  • canonicalize (bool) -- 规范化每个提取的URL(使用w3lib.url.canonicalize_url)。默认为 False . 请注意,规范化URL用于重复检查;它可以更改服务器端可见的URL,因此对于使用规范化URL和原始URL的请求,响应可能不同。如果您使用linkextractor跟踪链接,那么保持默认链接更为可靠。 canonicalize=False .

  • unique (bool) -- 是否对提取的链接应用重复筛选。

  • process_value (collections.abc.Callable) -- 一种函数,接收从扫描的标记和属性中提取的每个值,并能修改该值并返回一个新值,或返回 None 完全忽略链接。如果没有给出, process_value 默认为 lambda x: x . …highlight::html例如,要从此代码中提取链接,请执行以下操作::<a href=“javascript:gotopage('../other/page.html');return false“>link text.<a>。highlight::python您可以在 process_value ::def process_value(value):m=re.search(“javascript:gotopage('(.*?)'”,value)如果m:返回m.group(1)

  • strip (bool) -- 是否从提取的属性中删除空白。根据HTML5标准,必须从 href 属性 <a> , <area> 还有许多其他元素, src 属性 <img> , <iframe> 元素等,因此linkextractor默认情况下会删除空格字符。集合 strip=False 关闭它(例如,如果从允许前导/尾随空格的元素或属性中提取URL)。

返回的列表 Link 来自指定的 response .

仅与传递给 __init__ 返回链接提取器的方法。

重复链接被省略。

12下一页
上一篇:请求和响应下一篇:设置

Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )

GMT+8, 2024-11-21 17:53 , Processed in 0.035783 second(s), 17 queries .

© 2001-2020

返回顶部