CrawlSpiders类

Posted on 2019-10-10 10:13  大白不白  阅读(146)  评论(0编辑  收藏  举报

CrawlSpiders类:深入爬取

创建爬虫:

scrapy genspider -t crawl tencent tencent.com

 # 匹配链接

from scrapy.linkextractors import LinkExtractor

link_list = LinkExtractor(allow=("start=\d+"))

# 处理链接,拿出response所有匹配到的链接

link_list.extract_links(response)

allow:符合就提取

deny:不符合就提取

deny_domains:一定不会匹配

 

 rules:

link_extractor:是一个link extractor对象,用于需要定义需要提取的链接

callback:从link_extractor中每获取到链接时,参数所指定的值作为回调函数,改回调函数接受一个response作为其第一个参数

当编写爬虫规则时,避免使用parse作为回调函数,由于CrawlSpider使用parse方法来实现其逻辑,如果覆盖了parse方法,将会运行失败

follow:是一个布尔值,指定了根据该规则从response提取的链接是否需要跟进,如果callback为None,follow默认为True

class TencentSpider(CrawlSpider):
    name = "tencent"
    allow_domains = ["hr.tencent.com"]
    start_urls = ["http://hr.tencent.com/position.php?&start0#a"]

    pagelink = LinkExtractor(allow=("start=\d+"))
    # 提取链接
    rules = [
         Rule(pagelink,callback="parseTent",follow=True)               
    
     ]


    def parseTencent(self,response):
        pass

scrapy提供了log功能,可以通过logging模块使用

修改配置文件settings.py:

LOG_fILE = "TencentSpider.log"

LOG_LEVEL = "INFO"

Log levels:

  • Scrapy提供5层logging级别:

  • CRITICAL - 严重错误(critical)

  • ERROR - 一般错误(regular errors)
  • WARNING - 警告信息(warning messages)
  • INFO - 一般信息(informational messages)
  • DEBUG - 调试信息(debugging messages)
  1. LOG_ENABLED 默认: True,启用logging
  2. LOG_ENCODING 默认: 'utf-8',logging使用的编码
  3. LOG_FILE 默认: None,在当前目录里创建logging输出文件的文件名
  4. LOG_LEVEL 默认: 'DEBUG',log的最低级别
  5. LOG_STDOUT 默认: False 如果为 True,进程所有的标准输出(及错误)将会被重定向到log中。例如,执行 print "hello" ,其将会在Scrapy log中显示。

CrawlSpiders类比Spiders类多了自动获取link。

 

Copyright © 2024 大白不白
Powered by .NET 8.0 on Kubernetes