爬虫框架Scrapy 之(六) --- scrapy增量爬虫

增量爬虫

  在scrapy中有很多的爬虫模版,这些模版都是基于basic模版进行的功能扩展(例如:crawl模版、feed模版等)最常用的是crawl(即增量式爬虫)

  basicspider的设计理念是:从start_urls里面取出起始的url,使用start_urls来驱动引擎工作

  增量式爬虫:首先以start_urls中的url为起点,从这些url中不断的请求网页,然后从新的网页中匹配出新的url重新放入调度器的队列进行调度;

        再从新的url网页中提取新的url,在进行调度。依此类推直到所有的url都匹配完成为止

爬虫文件

 1 # -*- coding: utf-8 -*-
 2 import scrapy
 3 #  在scrapy中有很多的爬虫模版,这些模版都是基于basic模版进行的功能扩展(例如:crawl模版、feed模版等)最常用的是crawl(即增量式爬虫)
 4 #  basicspider的设计理念是:从start_urls里面取出起始的url,使用start_urls来驱动引擎工作
 5 #  增量式爬虫:首先以start_urls中的url为起点,从这些url中不断的请求网页,然后从新的网页中匹配出新的url重新放入调度器的队列进行调度
 6 #     再从新的url网页中提取新的url,在进行调度。依此类推直到所有的url都匹配完成为止
 7 from scrapy.linkextractors import LinkExtractor
 8 # LinkExtractor用于根据一定的规则,从网页中提取新的url
 9 from scrapy.spiders import CrawlSpider, Rule
10 # CrawlSpider:增量爬虫。 Rule:一个规则对象,根据LinkExtractor匹配的网址发起请求,并且回调函数
11 
12 
13 class BookSpider(CrawlSpider):  # 继承自CrawlSpider
14     name = 'book'
15     allowed_domains = ['dushu.com']
16     start_urls = ['https://www.dushu.com/book/1002.html']
17 
18     # rules规则:包含若干个rule对象,每一个rule对象去匹配并且请求一定的url
19     #   callback: 它的回调函数,字符串格式书写
20     #   LinkExtractor对象的匹配规则:
21     #       allow参数代表:正则规则
22     #       restrict_xpaths参数:通过xpath路径来匹配
23     #       restrict_css参数: 通过css来匹配
24     rules = ( #根据Extractor匹配到的网址,来发起请求。
25         # 正则匹配
26         Rule(LinkExtractor(allow=r'/book/1002_\[1-6]\.html'), callback='parse_item', follow=True),
27         # xpath匹配
28         # Rule(LinkExtractor(restrict_xpaths='//div[@class="pages"]/a'), callback='parse_item', follow=True),
29         # css匹配
30         # Rule(LinkExtractor(restrict_css='.pages a'), callback='parse_item', follow=True),
31     )
32 
33     def parse_item(self, response):
34         item = {}
35         #item['domain_id'] = response.xpath('//input[@id="sid"]/@value').get()
36         #item['name'] = response.xpath('//div[@id="name"]').get()
37         #item['description'] = response.xpath('//div[@id="description"]').get()
38         return item

猜你喜欢

转载自www.cnblogs.com/TMMM/p/11370982.html