Scrapy : Link Extractors

    技术2022-07-10  127

    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__方法的设置匹配的才会返回。

    重复的链接被省略。

    Processed: 0.709, SQL: 9