• CrawlSpiders


    CrawlSpiders是 Spider 的派⽣类,Spider 类的设计原则是只爬取 start_url 列表中的⽹页,⽽CrawlSpider 类定义了⼀些规则(rule)来提供跟进 link 的⽅便的机制(可以爬取下一页或跟进页面中其他的url),从爬取 的⽹⻚中获取 link 并继续爬取的⼯作更适合。CrawlSpider 继承于 Spider 类,除了继承过来的属性外,还提供了⼀个新的属性和⽅法:
    rules
    在 rules 中包含⼀个或多个 Rule 对象,每个 Rule 对爬取⽹站的动作定义了特定 操作。如果多个 rule 匹配了相同的链接,则根据规则在本集合中被定义的顺 序,第⼀个会被使⽤。

    from scrapy.linkextractors import LinkExtractor #提取链接
    from  scrapy.spiders import CrawlSpider,Rule #循环抓取规则
    
    
    class CnblogsspiderSpider(CrawlSpider):
        ...
        rules = (
            Rule(link_extractor=LinkExtractor(allow=r"/article/list/d+"),         process_links="parse_links"),  # 自动翻页,没有callback自动翻页
            Rule(link_extractor=LinkExtractor(allow=r"/article/details/d+"), callback="parse_content"), # 子链接 )

    link_extractor :是⼀个 Link Extractor 对象,⽤于定义需要提取的链接。callback : 从 link_extractor 中每获取到链接时,参数所指定的值作为回调函数,该回调函数接受⼀个 response 作为其第⼀个参数。follow :是⼀个布尔(boolean)值,指定了根据该规则从 response 提取的链接是否需要跟进。 如果 callback 为 None,follow 默认设置为True , 否则默认为 Falseprocess_links :指定该 spider 中哪个的函数将会被调⽤,从link_extractor 中获取到链接列表时 将 会调⽤该函数。该⽅法主要⽤来过 滤请求.然后在执行回调函数

    process_request :在回调函数之后调用spider中的一个函数. (⽤来过滤 request)
    parse_start_url(response):当 start_url 的请求返回时,该⽅法被调⽤。

    LinkExtractors
    class scrapy.linkextractors.LinkExtractor
    Link Extractors 的⽬的很简单: 提取链接。 每个 LinkExtractor 有唯⼀的公共⽅法是 extract_links(),它接收⼀个Response 对象,并返回⼀个 scrapy.link.Link 对象。
    Link Extractors 要实例化⼀次,并且 extract_links ⽅法会根据不同的response 调⽤多次提取链接。

    LinkExtractor(allow=r"/article/list/d+")#从所有找到的连接中定义需要提取的url

    主要参数:
    allow :满⾜括号中“正则表达式”的值会被提取,如果为空,则全部匹

    deny :与这个正则表达式(或正则表达式列表)不匹配的 URL⼀定不提
    取。
    allow_domains :会被提取的链接的 domains。
    deny_domains :⼀定不会被提取链接的 domains。
    restrict_xpaths :使⽤xpath 表达式,和 allow 共同作⽤过滤链接。
    爬取规则(Crawling rules) 继续⽤腾讯招聘为
    例,给出配合 rule 使⽤CrawlSpider 的例⼦: 1. ⾸先运⾏
    scrapy shell "http://hr.tencent.com/position.php?&start=0#a"
    CrawlSpiders
    221
    2. 导⼊LinkExtractor,创建 LinkExtractor 实例对象。:

    from scrapy.linkextractors import LinkExtractor
    page_lx = LinkExtractor(allow=('position.php?&start=d+'))

    allow : LinkExtractor 对象最重要的参数之⼀,这是⼀个正则表达式,必须要匹配这个正则表达式(或正则表达式列表)的 URL 才会被提取,如果没有给出(或为空), 它会匹配所有的链接。

    deny : ⽤法同 allow,只不过与这个正则表达式匹配的 URL 不会被提 取 ) 。它的优先级⾼于 allow 的参数,如果没有给出 ( 或 None),将不排 除任何链接。

    
    



    
    
  • 相关阅读:
    Java 1.7.0_21b11 Code Execution
    nginx NULLByte 任意代码执行漏洞
    nginx ‘ngx_http_close_connection()’远程整数溢出漏洞
    WordPress WP Super Cache插件任意代码执行漏洞
    memcached 远程拒绝服务漏洞
    原环套原环
    要去哈尔滨了
    母亲节就要到了,你忘了吗?
    对于流媒体服务的一点概念
    有了螃蟹让心情好一点
  • 原文地址:https://www.cnblogs.com/hhy-love-python/p/8521326.html
Copyright © 2020-2023  润新知