美文网首页
CrawlSpiders

CrawlSpiders

作者: WANGLIN_HZ | 来源:发表于2018-12-09 19:18 被阅读0次

    它是Spider的派生类,Spider类的设计原则是只爬取start_url列表中的网页,而CrawlSpider类定义了一些规则(rule)来提供跟进link的方便的机制,从爬取的网页中获取link并继续爬取的工作更合适

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

    scrapy genspider -t crawl 爬虫文件 域名

    CrawlSpider继承于Spider类,除了继承过来的属性外(name, allow_domains),还提供了新的属性和方法:LinkExtractors
    Link Extractors的目的很简单:提取链接
    每个LinkExtractor有唯一的公共方法时extract_links(),它接收一个Response对象,并返回一个scrapy.link.Link对象。

    主要参数:

    • allow:满足括号中“正则表达式”的URL会被提取,如果为空,则全部匹配。

    • deny:满足括号中“正则表达式”的URL一定不提取(优先级高于allow)。

    • allow_domains:会提取的链接的domains。

    • deny_domains:一定不会被提取链接的domains。

    • restrict_xpaths:使用xpath表达式,和allow共同作用过滤链接。

    rules

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

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

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

    • link_extractor:是一个Link Extractor对象,用于定义需要提取的链接。

    • callback: 从link_extractor中每获取到链接得到Responses时,会调用参数所指定的值作为回调函数,该回调函数接收一个response作为其一个参数。

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

    • process_links:指定spider中哪个的函数将会被调用,从link_extractor中获取到链接列表时将会调用该函数。该方法主要用来过滤。

    • process_request:指定处理函数,根据该Rule提取到的每个Request时,该函数将会被调用,可以对Request进行处理,该函数必须返回Request或者None

    爬取规则(Crawling rules)
    1.可以先创建一个虚拟环境
    2.进入指定目录,创建爬虫项目
    第一步:根据要爬取的网页确定需要保存的字段
    Item.py:定义需要爬取的字段

    第二步:编写爬虫类,LinkExtractor实例对象
    根据需要提取的页面的url来设置需要提取的规则

    第三步:数据保存,pipelines管道文件

    第四步:settings相关设置,settings.py设置文件

    • 1.ROBOTSTXT_OBEY = False 设置是否遵守robot协议
    • 2.DOWNLOAD_DELAY = 3 设置下载延时
    • 3.设置全局的Header
      DEFAULT_REQUEST_HEADERS = {
      'User-Agent':' Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:59.0) Gecko/20100101 Firefox/59.0',
      }
    • 4.激活pipelines数据处理管道

    ITEM_PIPELINES = {
    'xiachufang.pipelines.XiachufangPipeline': 300,
    }

    关于数据库的相关配置
    MYSQL_HOST = '127.0.0.1'
    MYSQL_PORT = 3306
    MYSQL_USER = ''
    MYSQL_PWD = ''
    MYSQL_DB = ''
    CHARSET = 'utf8'

    第五步:运行程序

    相关文章

      网友评论

          本文标题:CrawlSpiders

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