美文网首页
crawlspider使用

crawlspider使用

作者: changzj | 来源:发表于2019-01-07 22:41 被阅读0次

    CrawlSpider

    它是Spider的派生类,Spider类的设计原则是只爬取start_url列表中的网页,而CrawlSpider类定义了一些规则Rule来提供跟进链接的方便的机制,从爬取的网页结果中获取链接并继续爬取的工作.

    通过下面的命令可以快速创建 CrawlSpider模板 的代码:

    • scrapy genspider -t crawl 爬虫文件 域名

    rules

    • CrawlSpider使用rules属性来决定爬虫的爬取规则,并将匹配后的url请求提交给引擎,完成后续的爬取工作。

    • 在rules中包含一个或多个Rule对象,每个Rule对爬取网站的动作定义了某种特定操作,比如提取当前相应内容里的特定链接,是否对提取的链接跟进爬取,对提交的请求设置回调函数等。

    class scrapy.spiders.Rule(
            link_extractor,
            callback = None,
            cb_kwargs = None,
            follow = None,
            process_links = None,
            process_request = None
    )
    

    主要参数

    LinkExtractor:设置提取链接的规则(正则表达式)
    allow=(), : 设置允许提取的目标url
    deny=(), : 设置不允许提取的目标url(优先级比allow高)
    allow_domains=(), :设置允许提取url的域
    deny_domains=(), : 设置不允许提取url的域(优先级比allow_domains高)
    restrict_xpaths=(),:根据xpath语法,定位到某一标签下提取链接 
    restrict_css=(),:根据css选择器,定位到某一标签下提取链接
    unique=True, :如果出现多个相同的url,只会保留一个
    strip=True:默认为true,表示去除url首尾空格
    link_extractor,:link_extractor对象 
    callback=None, :设置回调函数
    follow=None, :是否设置跟进
    process_links=None, :可以设置回调函数,对所有提取到的url进行拦截
    process_request=identity:可以设置回调函数,对request对象进行拦截
    

    如果多个rule匹配了相同的链接,则根据规则在本集合中被定义的顺序,第一个会被使用

    • LinkExtractors 的目的很简单: 提取链接。

    每个LinkExtractor有唯一的公共方法是 extract_links(),它接收一个 Response 对象,并返回一个 scrapy.link.Link 对象。
    LinkExtractors要实例化一次,并且 extract_links 方法会根据不同的 response 调用多次提取链接。

    相关文章

      网友评论

          本文标题:crawlspider使用

          本文链接:https://www.haomeiwen.com/subject/nejprqtx.html