原文件下载路径:
【网络爬虫技术】基于Scrapy框架的全站数据抓取:汽车之家二手车信息采集系统设计与实现
【Web爬虫技术】基于Scrapy框架的CrawlSpider爬虫规则配置与应用:自动化分页抓取系统设计
scrapy的crawlspider爬虫
学习目标:
- 了解 crawlspider的作用
- 应用 crawlspider爬虫创建的方法
- 应用 crawlspider中rules的使用
1、crawlspider是什么
回顾之前的代码中,我们有很大一部分时间在寻找下一页的url地址或者是内容的url地址上面,这个过程能更简单一些么?
思路:
- 从response中提取所有的满足规则的url地址
- 自动的构造自己requests请求,发送给引擎
对应的crawlspider就可以实现上述需求,能够匹配满足条件的url地址,组装成Reuqest对象后自动发送给引擎,同时能够指定callback函数
即:crawlspider爬虫可以按照规则自动获取连接
2、crawlspider豆瓣TOP250爬虫
通过crawlspider爬取豆瓣TOP250详情页的信息
url:https://movie.douban.com/top250
思路分析:
- 定义一个规则,来进行列表页翻页,follow需要设置为True
- 定义一个规则,实现从列表页进入详情页,并且指定回调函数
- 在详情页提取数据
注意:连接提取器LinkExtractor中的allow对应的正则表达式匹配的是href属性的值
3、创建crawlspider爬虫并观察爬虫内的默认内容
3.1 创建crawlspider爬虫:
scrapy startproject project
cd project
scrapy genspider -t crawl douban book.douban.com/latest?subcat=%E5%85%A8%E9%83%A8&p=1
url: 豆瓣图书 https://book.douban.com/latest?subcat=%E5%85%A8%E9%83%A8&p=1
3.2 spider中默认生成的内容如下:
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
class BookSpider(CrawlSpider):
name = 'douban'
# allowed_domains = ['https://movie.douban.com/top250']
start_urls = ['https://movie.douban.com/top250']
# 匹配页码地址
link = LinkExtractor(allow=r'start=\d+&filter=')
# 匹配详情页地址
link_detail = LinkExtractor(allow=r'https://movie.douban.com/subject/\d+/')
# allow值什么都不写 则为提取所有的url
link_all = LinkExtractor