Python的Scrapy框架中的CrawlSpider介绍和使用
一、介绍CrawlSpider
CrawlSpider其实是Spider的一个子类,除了继承到Spider的特性和功能外,还派生除了其自己独有的更加强大的特性和功能。其中最显著的功能就是”LinkExtractors链接提取器“。
Spider是所有爬虫的基类,其设计原则只是为了爬取start_url列表中网页,而从爬取到的网页中提取出的url进行继续的爬取工作使用CrawlSpider更合适。
源码:
文档:Spiders — Scrapy 2.9.0 documentation
二、框架搭建
1.创建scrapy框架工程
2.进入工程目录
3.创建爬虫文件
此指令对比以前指令多了"-t crawl",表示创建的爬虫文件是基于CrawlSpider这个类的,而不再是Spider这个基类。
4.启动爬虫文件
(一)、查看生成的爬虫文件:
Rule(规则): 规范url构造请求对象的规则
LinkExtractor(链接提取器):规范url的提取范围
CrawlSpider:是一个类模板,继承自Spider,功能就更加的强大
(二)、查看LinkExtractor源码:
LinkExtractor 链接提取器
作用:提取response中符合规则的链接。
主要参数含义:
LinkExtractor:规范url提取可用的部分allow=(): 满足括号中“正则表达式”的值会被提取,如果为空,则全部匹配。 deny=(): 与这个正则表达式(或正则表达式列表)不匹配的URL一定不提取。allow_domains=():允许的范围域deny_domains=(): 不允许的范围域restrict_xpaths=(): 使用xpath表达式,和allow共同作用过滤链接(只选到节点,不选到属性)tags=('a', 'area'): 指定标签attrs=('href',): 指定属性
(三)、查看Rule源码:
Rule : 规则解析器。根据链接提取器中提取到的链接,根据指定规则提取解析器链接网页中的内容
Rule (LinkExtractor(allow=r"Items/"), callback="parse_item", follow=True)
主要参数含义:
link_extractor为LinkExtractor,用于定义需要提取的链接callback参数:当link_extractor获取到链接时参数所指定的值作为回调函数callback参数使用注意: 当编写爬虫规则时,请避免使用parse作为回调函数。于CrawlSpider使用parse方法来实现其逻辑,如果您覆盖了parse方法,crawlspider将会运行失败follow:指定了根据该规则从response提取的链接是否需要跟进。 当callback为None,默认值为Trueprocess_links:主要用来过滤由link_extractor获取到的链接process_request:主要用来过滤在rule中提取到的request
rules=( ):指定不同规则解析器。一个Rule对象表示一种提取规则。
(四)、CrawlSpider整体爬取流程:
(a) 爬虫文件首先根据起始url,获取该url的网页内容
(b) 链接提取器会根据指定提取规则将步骤a中网页内容中的链接进行提取
(c) 规则解析器会根据指定解析规则将链接提取器中提取到的链接中的网页内容根据指定的规则进行解析
(d) 将解析数据封装到item中,然后提交给管道进行持久化存储
三、基于CrawlSpider使用
(1)spider爬虫文件代码
(2)数据保存>>pipelines管道文件
(3)settings相关设置 >>settings.py设置文件
(4)运行程序 >>scrapy crawl crawl_yjin --nolog
查看保存的json文件
到此这篇关于Python的Scrapy框架中的CrawlSpider介绍和使用的文章就介绍到这了,更多相关Scrapy框架中的CrawlSpider 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
栏目分类
- ERG中文网
- ERG中文网