zoukankan      html  css  js  c++  java
  • 爬虫:Scrapy10

    Link Extractors 适用于从网页(scrapy.http.Response)中抽取会被 follow 的链接的对象。

    Scrapy 默认提供 2 种可用的 Link Extractor,但你可以通过实现一个简单的接口创建自己制定的 Link Extractor 来满足需求。Scrapy 提供了 from scrapy.contrib.linkextractors import LinkExtractor。

    每个 LinkExtractor 有唯一的公共方法是 extract_links,其接收一个 Response 对象,并返回 scrapy.link.Link 对象。Link Extractors 只能实例化一次,其 extract_links 方法会根据不同的 Response 被调用多次来提取链接。

    Link Extractors 在 CrawlSpider 类(在 Scrapy 可用)中使用。通过一套规则,你也可以用它在你的 Spider 中个,即使你不是从 CrawlSpider 继承的子类,因为它的目的很简单:提取链接。

    内置 Link Extractor 参考

    Scrapy 自带的 Link Extractors 类在 scrapy.contrib.linkextractors 模块提供。

    默认的 link extractor 是 LinkExtractor ,其实就是 LxmlLinkExtractor:

    from scrapy.contrib.linkextractors import LinkExtractor

    在以前版本的 Scrapy 版本中提供了其他的 link extractor,不过都已经被废弃了。

    LxmlLinkExtractor

    class scrapy.contrib.linkextractors.lxmlhtml.LxmlLinkExtractor(allow=(), deny=(), allow_domains=(), deny_domains=(), deny_extensions=None, restrict_xpaths=(), tags=('a', 'area'), attrs=('href', ), canonicalize=True, unique=True, process_value=None)

    LxmlLinkExtractor is the recommended link extractor with handy filtering options. It is implemented using lxml’s robust HTMLParser.

    它接收来自扫描标签和属性提取每个值, 可以修改该值, 并返回一个新的,或返回 None 完全忽略链接的功能。如果没有给出,process_value 默认是 lambda x: x。

    例如,从这段代码中提取链接:

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

    你可以使用下面的这个 process_value 函数:

    def process_value(value):
        m = re.search("javascript:goToPage('(.*?)'", value)
        if m:
            return m.group(1)
  • 相关阅读:
    A Plug for UNIX (最大流 邻接矩阵dinic)POJ
    Dining POJ
    ACM Computer Factory (邻接矩阵 dinic 模板)(最大流+路径输出)POJ
    HDU
    E
    2018 东北赛i 简单dpI
    Coloring Brackets CodeForces
    2019浙江省赛j welcome Party
    D
    Critical Links (UVA
  • 原文地址:https://www.cnblogs.com/sufei-duoduo/p/5880936.html
Copyright © 2011-2022 走看看