Scrapy : Link Extractors

Link Extractors

连接提取器从响应中提取链接。

LxmlLinkExtractor的__init__ 方法获得定义了提取什么样链接的设置,LxmlLinkExtractor.extract_links 返回再响应对象中匹配的scrapy.link.Link对象的列表。

连接提取器再crawlspider爬虫中使用,通过Rule 对象的设置。你也可以再通用爬虫中使用。

Link extractor reference

连接提取器的类是scrapy.linkextractors.lxmlhtml.LxmlLinkExtracotr. 为了简便可以这样导入:

from scrapy.linkextractors import LinkExtractor

LxmlLinkExtractor

class scrapy.linkextractors.lxmlhtml.LxmlLineExtractor(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)

LxmlLinkExtractor 是推荐的连接提取器,可以处理过滤操作。他的机制是使用强大的lxml的HTMLParser

Parmeters

  • allow (a regular expression (or list of*)*) – 单个正则(或正则的列表),绝对urls必须顺序匹配才可以提取。如果是空,返回所有链接。

  • deny (a regular expression (or list of*)*) – 这个是排除的,优先级高于 allow 参数,如果是空,不会排除任何链接。

  • allow_domains (str or list) – 单个值或字符串包含域名的列表,这些域名会被考虑去提取链接

  • deny_domains (str or list) – 排除的域名。

  • deny_extensions (list) –

    单个值或字符串的列表包含了再提取链接时应该忽略的扩展名。如果为空,默认 scrapy.linkextractors.IGNORED_EXTENSIONS.

    Changed in version 2.0: IGNORED_EXTENSIONS now includes 7z, 7zip, apk, bz2, cdr, dmg, ico, iso, tar, tar.gz, webm, and xz.

  • restrict_xpaths (str or list) – 一个XPath语法(或列表)定义了在响应中提取的范围,如果给了,只有被这些xpath 选择的文本才会被扫描来提取链接。

  • restrict_css (str or list) – a CSS selector (or list of selectors) which defines regions inside the response where links should be extracted from. Has the same behaviour as restrict_xpaths.# 同上

  • restrict_text (a regular expression (or list of*)*) – 单个正则(或列表)来限制提取链接的文本。如果是空,将匹配所有链接,如果是一个列表,只要匹配一个链接就会被提取。

  • tags (str or list) – 当提取连接时考虑的单个标签(或列表)Defaults to ('a', 'area')

  • attrs (list) – 单个属性或列表,在提取连接时考虑的(只对那些在tags 属性中指定标签), Defaults to ('href',)

  • canonicalize (boolean) – 规范化每一个提取的url(使用w3lib.url.canonicalize_url)。默认是False,注意canonicalize_url 用来重复检查;它可以改变服务器端可见的url,所以对规范化的url和原生url,他们的响应式不同的。如果你正在使用linkextractor跟进链接最好不要用这个。

  • unique (boolean) – 是否将重复过滤应用在提取的链接上。

  • process_value (callable) –

一个函数接收从标签和数学扫描并提取的值,可以修改这些值然后返回一个新的,获知返回None忽略所有链接,如果没给,默认是lambda x:x

For example, to extract links from this code:

<a href="javascript:goToPage('../other/page.html'); return false">Link text</a>

You can use the following function in process_value:

def process_value(value):
    m = re.search("javascript:goToPage\('(.*?)'", value)
    if m:
        return m.group(1)
  • strip (boolean) – 是否去掉提取的属性的空格,根据HTML5标准,对<a>的href属性,<area>和很多其他元素,<img>的src属性,<iframe>元素等,开头和结尾的空格必须去掉。设置这个为False 来关闭(例如,如果你想从允许开头/结尾有空格的元素或属性中提取urls。

extract_links(response)[source]

返回从指定响应中Link 对象的列表。

只有链接匹配传递给连接提取器的__init__方法的设置匹配的才会返回。

重复的链接被省略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值