邢台做网站的价格究竟多少钱?,福步外贸官网,开封网站制作公司,wordpress页面宽度改为全屏scrapy的crawlspider爬虫
学习目标#xff1a;
了解 crawlspider的作用应用 crawlspider爬虫创建的方法应用 crawlspider中rules的使用 1、crawlspider是什么 回顾之前的代码中#xff0c;我们有很大一部分时间在寻找下一页的url地址或者是内容的url地址上面#xff0c;这…scrapy的crawlspider爬虫
学习目标
了解 crawlspider的作用应用 crawlspider爬虫创建的方法应用 crawlspider中rules的使用 1、crawlspider是什么 回顾之前的代码中我们有很大一部分时间在寻找下一页的url地址或者是内容的url地址上面这个过程能更简单一些么 思路
从response中提取所有的满足规则的url地址自动的构造自己requests请求发送给引擎
对应的crawlspider就可以实现上述需求能够匹配满足条件的url地址组装成Reuqest对象后自动发送给引擎同时能够指定callback函数
即crawlspider爬虫可以按照规则自动获取连接
2、crawlspider豆瓣TOP250爬虫 通过crawlspider爬取豆瓣TOP250详情页的信息 urlhttps://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%A8p1
url: 豆瓣图书 https://book.douban.com/latest?subcat%E5%85%A8%E9%83%A8p1
3.2 spider中默认生成的内容如下
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Ruleclass BookSpider(CrawlSpider):name douban# allowed_domains [https://movie.douban.com/top250]start_urls [https://movie.douban.com/top250]# 匹配页码地址link LinkExtractor(allowrstart\dfilter)# 匹配详情页地址link_detail LinkExtractor(allowrhttps://movie.douban.com/subject/\d/)# allow值什么都不写 则为提取所有的urllink_all LinkExtractor(allowr)rules (# Rule(link, callbackparse_item, followTrue),# Rule(link_detail, callbackparse_detail_item, followFalse),Rule(link_all, callbackparse_all_item, followTrue),)def parse_item(self, response):item {}print(response)return itemdef parse_detail_item(self, response):item {}print(response)return itemdef parse_all_item(self, response):item {}print(response)return item3.3 观察跟普通的scrapy.spider的区别
在crawlspider爬虫中没有parse函数
重点在rules中
rules是一个元组或者是列表包含的是Rule对象Rule表示规则其中包含LinkExtractor,callback和follow等参数LinkExtractor:连接提取器可以通过正则或者是xpath来进行url地址的匹配callback :表示经过连接提取器提取出来的url地址响应的回调函数可以没有没有表示响应不会进行回调函数的处理follow连接提取器提取的url地址对应的响应是否还会继续被rules中的规则进行提取True表示会Flase表示不会
4、crawlspider使用的注意点
除了用命令scrapy genspider -t crawl 爬虫名 allowed_domail创建一个crawlspider的模板页可以手动创建crawlspider中不能再有以parse为名的数据提取方法该方法被crawlspider用来实现基础url提取等功能Rule对象中LinkExtractor为固定参数其他callback、follow为可选参数不指定callback且follow为True的情况下满足rules中规则的url还会被继续提取和请求如果一个被提取的url满足多个Rule那么会从rules中选择一个满足匹配条件的Rule执行
5、了解crawlspider其他知识点 链接提取器LinkExtractor的更多常见参数 allow: 满足括号中的’re’表达式的url会被提取如果为空则全部匹配 deny: 满足括号中的’re’表达式的url不会被提取优先级高于allow allow_domains: 会被提取的链接的domains(url范围)如[https://movie.douban.com/top250] deny_domains: 不会被提取的链接的domains(url范围) restrict_xpaths: 使用xpath规则进行匹配和allow共同过滤url即xpath满足的范围内的url地址会被提取 如restrict_xpaths//div[classpagenav] restrict_css: 接收一堆css选择器, 可以提取符合要求的css选择器的链接 attrs: 接收一堆属性名, 从某个属性中提取链接, 默认href tags: 接收一堆标签名, 从某个标签中提取链接, 默认a, area 值得注意的, 在提取到的url中, 是有重复的内容的. 但是我们不用管. scrapy会自动帮我们过滤掉重复的url请求 模拟使用
正则用法 links1 LinkExtractor(allowr’list_23_\d.html’)
xpath用法 links2 LinkExtractor(restrict_xpathsr’//div[class“x”])
css用法 links3 LinkExtractor(restrict_css‘.x’)
5.提取连接 Rule常见参数 LinkExtractor: 链接提取器可以通过正则或者是xpath来进行url地址的匹配callback: 表示经过连接提取器提取出来的url地址响应的回调函数可以没有没有表示响应不会进行回调函数的处理follow: 连接提取器提取的url地址对应的响应是否还会继续被rules中的规则进行提取默认True表示会Flase表示不会process_links: 当链接提取器LinkExtractor获取到链接列表的时候调用该参数指定的方法这个自定义方法可以用来过滤url且这个方法执行后才会执行callback指定的方法
总结
crawlspider的作用crawlspider可以按照规则自动获取连接crawlspider爬虫的创建scrapy genspider -t crawl xxx www.xxx.comcrawlspider中rules的使用 rules是一个元组或者是列表包含的是Rule对象Rule表示规则其中包含LinkExtractor,callback和follow等参数LinkExtractor:连接提取器可以通过正则或者是xpath来进行url地址的匹配callback :表示经过连接提取器提取出来的url地址响应的回调函数可以没有没有表示响应不会进行回调函数的处理follow连接提取器提取的url地址对应的响应是否还会继续被rules中的规则进行提取True表示会Flase表示不会