Scrapy框架的学习(9.Scrapy中的CrawlSpider类的作用以及使用,实现优化的翻页爬虫)
1.CrawlSpider类通过一些规则(rules),使对于链接(网页)的爬取更具有通用性,
换句话说,CrawlSpider爬虫为通用性的爬虫,
而Spider爬虫更像是为一些特殊网站制定的爬虫。它基于Spider并有一些独特属性
rules: 是Rule对象的集合,用于匹配目标网站并排除干扰
parse_start_url: 用于爬取起始响应,必须要返回Item
2. Scrapy中的爬虫方法继承四种类来建立我们的scrapy爬虫,
他们是:Spider类,CrawlSpider类, CSVFeedSpider类和XMLFeedSpider类
3. 通过命令的方式生成一个CrawlSpider类的模板
scrapy genspider -t crawl 爬虫 域名
4. 通过爬取这个网站http://bxjg.circ.gov.cn/web/site0/tab5240/module14430/page1.htm 来使用CrawlSpider类进行爬虫
(1)创建好项目后,创建爬虫(加入了-t crawl) scrapy genspider -t crawl punish bxjg.circ.gov.cn
(2) 可以使用rules规则,就可以不用再写一个专门针对于下一页的请求函数了
rules = (Rule(LinkExtractor(allow=r'/web/site0/tab5240/info\d+\.htm'), callback='parse_item'),Rule(LinkExtractor(allow=r'/web/site0/tab5240/module14430/page\d+\.htm'),follow=True),)
LinkExtractor 连接提取器,提取url
参数:
url allow : 可以写入正则表达式
callback: 提取出来的url地址的response交给callback处理 ,需要时再用,一般对应的网站详情页面要使用
follow: 表示当前的url地址的响应是否重新经过rules来提取url地址,需要时再用
(3) 然后 编写爬虫的代码
# -*- coding: utf-8 -*- import scrapy from scrapy.linkextractors import LinkExtractor from scrapy.spiders import CrawlSpider, Rule import re '''继承spider的crawlspider类''' class PunishSpider(CrawlSpider):name = 'punish'allowed_domains = ['bxjg.circ.gov.cn']start_urls = ['http://bxjg.circ.gov.cn/web/site0/tab5240/module14430/page1.htm']'''可以定义提取url地址的规则LinkExtractor 连接提取器,提取urlallow : 可以写入正则表达式callback: 提取出来的url地址的response交给callback处理follow: 表示当前的url地址的响应是否重新经过rules来提取url地址'''rules = (Rule(LinkExtractor(allow=r'/web/site0/tab5240/info\d+\.htm'), callback='parse_item'),Rule(LinkExtractor(allow=r'/web/site0/tab5240/module14430/page\d+\.htm'),follow=True),)'''与Spider类不同,CrawlSpider类中的parse函数有特殊功能,不能定义'''def parse_item(self, response):item = {}item['title'] = re.findall("<!--TitleStart-->(.*?)<!--TitleEnd-->",response.body.decode())[0]item['publish_date'] = re.findall("发布时间:(20\d{2}-\d{2}-\d{2})",response.body.decode())[0]print(item)
(4) 在setting.py里面设置 LOG_LEVEL = "WARNING" 以及开启并设置 USER_AGENT,然后在终端运行程序
scrapy crawl punish
(5) LinKExtractor更多常见的参数:
5. 再请求详情页的时候,我们也可以使用在Spider类中一样,
通过 yield scrapy.Request() 方法也可以实现,但是代码会写的比使用Crawlspider类中的多
Scrapy框架的学习(9.Scrapy中的CrawlSpider类的作用以及使用,实现优化的翻页爬虫)相关推荐
- Scrapy框架的学习(2.scrapy入门,简单爬取页面,并使用管道(pipelines)保存数据)
上个博客写了: Scrapy的概念以及Scrapy的详细工作流程 https://blog.csdn.net/wei18791957243/article/details/86154068 1.sc ...
- Scrapy框架的学习(12. scrapy中的模拟登陆,发送post请求模拟登陆)
1.在有的网站的的登录的界面上,有用户名以及输入密码的输入框 然后输入账号和密码进去,点击登录,后台就会把得到的数据发送过去,验证之后然后就登录成功了,就会跳转到 响应的登录之后的网站 2. 我们可以 ...
- Scrapy框架的学习(10.Scrapy中的模拟登陆(使用cookie模拟登陆))
1. 为什么需要模拟登陆? 获取cookie,能够爬取登陆后的页面的数据 2.使用cookie模拟登陆的场景 (1) cookie过期时间很长,常见于一些不规范的网站 (2) 能在cookie过期之前 ...
- Scrapy框架的学习(4.scrapy中的logging模块记录日志文件以及普通的项目中使用)
logging模块使用 为了让我们自己希望输出到终端的内容能容易看一些: 我们可以在setting中设置log级别 在setting中添加一行(全部大写):LOG_LEVEL = "WARN ...
- Scrapy框架的学习(8.scrapy中settings.py里面配置说明以及怎样设置配置或者参数以及怎样使用)
1.settings.py里面的参数说明 每个参数其对应的官方得文档的网址 # -*- coding: utf-8 -*-# Scrapy settings for tencent project # ...
- Scrapy框架的学习(11.scrapy框架中的下载中间件的使用(DownloaderMiddlewares))
1.Downloader Middlewares (下载中间键):引擎会先把Requets对象交给下载中间键再然后交给Downloader 2.使用方法: (1) 编写一个Downloader Mid ...
- Scrapy框架的学习(1.scrapy的概念以及scrapy的工作流程)
scrapy的概念 1.为什么要学习Scrapy? 因为会让我们的爬虫更快.更强 2.什么是scrapy? (1) Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现 ...
- scrapy框架_Python学习之Scrapy框架
爬虫界江湖地位No.1 说起Python,不得不说到它的爬虫应用,由于Python的短小精悍,用它来开发爬虫应用是最合适不过了,基于Python抓取网页的库有很多,例如requests,beatifu ...
- scrapy框架菜鸟学习记录
scrapy框架菜鸟学习记录 scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架.其可以应用在数据挖掘,信息处理或储存历史数据等一系列的程序中.其最初是为了页面抓取(更确切的说,网络抓 ...
最新文章
- Apriori算法、FP-Growth算法、顺序分析、PrefixSpan算法
- android 4大组件相互启动,Android四大组件之Activity
- JavaSist之ClassPool
- 单片机 原子性操作_一款深藏功与名的国产单片机——F1C100A
- 《LeetcodeHot100非困难题补录》
- Win10系统电脑查看无线密码的方法
- 还服务器网站被k,导致网站被K的主要原因,看看你有没有中招!
- scala map与mapPartitions区别
- 开关电路的三极管特性
- 数维杯国际大学生数学建模挑战赛
- 【矩阵乘法】矩阵求和
- 测试小故事48:想当然
- 计算股票季度收益率、年收益率和相对收益率并可视化展示。
- 搭建L2TP-***
- 网页-如何控制台调试网页
- 关于项目的可行性分析
- 韩国PAYWAVE认证之技术篇2
- 如何理解WPF中的样式(Style)与模板ControlTemplate
- hadoop集群安装ES(ElasticSearch 5.0.2)
- python实现的按键精灵
热门文章
- Mysql事务与锁深入剖析
- pandas 索引_Pandas学习笔记03数据清洗(通过索引选择数据)
- 【JVM调优工具篇】使用MAT工具分析dump文件(查看GC Roots)
- java修改配置不重启,java运行时修改应用数据,通过jmx修改应用运行数据
- vue-cli css文件图片路径写法
- 牛客题霸 NC21 链表内指定区间反转
- Python——中国大学MOOC——神经网络与深度学习——Matblotlib绘图基础
- 《编译原理》实验预习报告——TINY语言的词法分析
- Bone Collector II
- linux脚本的数据输出到excel,使用shell实现Excel表格导出功能 | 剑花烟雨江南