1.回顾昨日内容

回顾
- 全站数据爬取(分页)
- 手动请求的发送Request(url,callback)
- post请求和cookie处理
- start_requests(self)
- FromRequest(url,callback,formdata)
- cookie操作是自动处理 - 请求传参
- 使用场景:
- 实现:scrapy.Request(url,callback,meta={'':''})
callback:response.meta['']
- 中间件
- 下载中间件:批量拦截所有的请求和响应
- 拦截请求:UA伪装(process_request),代理ip(process_exception:return request)
- 拦截响应:process_response

2.crawl总结

- CrawlSpider
作用:就是用于进行全站数据的爬取
- CrawlSpider就是Spider的一个子类
- 如何新建一个基于CrawlSpider的爬虫文件
- scrapy genspider -t crawl xxx www.xxx.com
- LinkExtractor连接提取器:根据指定规则(正则)进行连接的提取
- Rule规则解析器:将链接提取器提取到的链接进行请求发送,然后对获取的页面数据进行
指定规则(callback)的解析
- 一个链接提取器对应唯一一个规则解析器

3.高效的全栈数据爬取

新建一个抽屉的项目,我们对其进行全栈数据的爬取

下图是页码对应的url

# -*- coding: utf- -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule class ChoutiSpider(CrawlSpider):
name = 'chouti'
# allowed_domains = ['www.xxx.com']
#抽屉的第一页链接
start_urls = ['https://dig.chouti.com/all/hot/recent/1']
#全栈数据爬取是将所有页码依次请求发送
#链接提取器:从起始url对应的页面中提取符合规则的链接,allow==>正则表达式
link=LinkExtractor(allow=r'/all/hot/recent/\d+')
rules = (
#规则解析器,可以有多个规则:将链接提取器提取到的链接对应的页面源码进行制定规则的解析
Rule(link, callback='parse_item', follow=False),
) def parse_item(self, response):
# item = {}
#item['domain_id'] = response.xpath('//input[@id="sid"]/@value').get()
#item['name'] = response.xpath('//div[@id="name"]').get()
#item['description'] = response.xpath('//div[@id="description"]').get()
# return item
print(response)

修改下面的内容:

LOG_LEVEL='ERROR'

下面我们提取指定的规则执行下面的命令:

运行之后,我们只是爬取到了10条数据

我们需要将最后一个界面作为起始,也就是follow=True就可以了

再次运行下面的命令:

运行上边的命令,我们就成功取到120页的数据.

自己理解这句话:

follow:True将链接提取器继续作用到链接提取器链接对应的页面源码中,

新的需求:

4.crawlSpider深度爬取

案例:阳光热线,我们解析出首页的对应"标题"和详情页中的"段落"

2个链接提取器和2和规则解析器

(1)下面第一步,我们需要新建一个工程

添加UA和修改robot协议为false

注释allowed_domains,并且将起始url写在start_urls里边

阳光热线的第一页:http://wz.sun0769.com/index.php/question/report?page=

看一下,我们如何取到源码的链接:

我们看到的是页码中的数据是30的倍数,对比我们看到了这个发生了变化

修改follow=False,只爬取前五页,原因是数据量太大

我们需要拿到table的xpath解析,注意要修改tbody,再拿到下面的tr

执行程序

小爬爬7:回顾&&crawlSpider的更多相关文章

  1. ELK之开心小爬爬

    1.开心小爬爬 在爬取之前需要先安装requests模块和BeautifulSoup这两个模块 ''' https://www.autohome.com.cn/all/ 爬取图片和链接 写入数据库里边 ...

  2. 小爬爬6.scrapy回顾和手动请求发送

    1.数据结构回顾 #栈def push(self,item) def pop(self) #队列 def enqueue(self,item) def dequeue(self) #列表 def ad ...

  3. 小爬爬5:重点回顾&&移动端数据爬取1

    1. ()什么是selenium - 基于浏览器自动化的一个模块 ()在爬虫中为什么使用selenium及其和爬虫之间的关联 - 可以便捷的获取动态加载的数据 - 实现模拟登陆 ()列举常见的sele ...

  4. java小知识点简单回顾

    1.java的数据类型分为两种:简单类型和引用类型(数组.类以及接口).注意,java没有指针的说法,只有引用.简单类型的变量被声明时,存储空间也同时被分配:而引用类型声明变量(对象)时,仅仅为其分配 ...

  5. 小爬爬5:scrapy介绍3持久化存储

    一.两种持久化存储的方式 1.基于终端指令的吃持久化存储: 特点:终端指令的持久化存储,只可以将parse方法的返回值存储到磁盘文件 因此我们需要将上一篇文章中的author和content作为返回值 ...

  6. 小爬爬4:12306自动登录&&pyppeteer基本使用

    超级鹰(更简单的操作验证) - 超级鹰 - 注册:普通用户 - 登陆: - 创建一个软件(id) - 下载示例代码 1.12306自动登录 # Author: studybrother sun fro ...

  7. 小爬爬1:jupyter简单使用&&爬虫相关概念

    1.jupyter的基本使用方式 两种模式:code和markdown (1)code模式可以直接编写py代码 (2)markdown可以直接进行样式的指定 (3)双击可以重新进行编辑 (4)快捷键总 ...

  8. 小爬爬5:scrapy介绍2

    1.scrapy:爬虫框架 -框架:集成了很多功能且具有很强通用性的一个项目模板 -如何学习框架:(重点:知道有哪些模块,会用就行) -学习框架的功能模板的具体使用. 功能:(1)异步爬取(自带buf ...

  9. 小爬爬6: 网易新闻scrapy+selenium的爬取

    1.https://news.163.com/ 国内国际,军事航空,无人机都是动态加载的,先不管其他我们最后再搞中间件 2. 我们可以查看到"国内"等板块的位置 新建一个项目,创建 ...

随机推荐

  1. Python configparser的使用 读取配置文件

    configparser是Python自带用于读取配置文件的工具包,它的使用非常简单 配置文件 配置文件[]中为section命名,section的命名可以包含空格,每个section下面以键值对的方 ...

  2. 搭建maven聚合工程包含springboot模块

    一.新建一个maven项目 二.删除src    打开pom.xml 补充标签 <packaging>pom</packaging> 新建 <module>brr- ...

  3. mac 安装svn

    别人说用Xcode装,我也不知道我这个是不是用Xcode装的 在命令行界面输入 sudo bash svn --version 会出现一大段介绍,关于xcode的,我也不懂,一只敲空格键到最后,然后输 ...

  4. 实现一个函数clone,使JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制

    实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number.String.Object.Array.Boolean)进行值复制. 1 /** 对象克隆 2 * 支持基本 ...

  5. vue跨域,复杂请求,后端为beego

    关于跨域,网上讲得很多,具体实施起来大多讲的不详细,贴我的vue端代码 require('es6-promise').polyfill() import fetch from 'isomorphic- ...

  6. oracle建立job定期运行存储过程

    1 首先查看 SQL> show parameter job NAME TYPE VALUE------------------------------------ ----------- -- ...

  7. CPU 和内存 $ free -m$ uptime$ top$ htop

    注意以下问题: 还有空余的内存吗? 服务器是否正在内存和硬盘之间进行swap? 还有剩余的CPU吗? 服务器是几核的? 是否有某些CPU核负载过多了? 服务器最大的负载来自什么地方? 平均负载是多少?

  8. SourceTree windows免注册免登陆使用方法

    问题描述: 安装SourceTree后,首次使用时,需要登录账号:但我们在注册或登录时,可能根本无法打开网页,导致不能进入. 如下截图: 解决方法: 在目录C:\Users\XXXXX\AppData ...

  9. Vue.js NPM 安装方法

    由于 npm 安装速度慢,本教程使用了淘宝的镜像及其命令 cnpm,安装使用介绍参照:使用淘宝 NPM 镜像. npm 版本需要大于 3.0,如果低于此版本需要升级它: # 查看版本 $ npm -v ...

  10. LUOGU P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm

    传送门 解题思路 记忆化搜索,如果搜到环,就将环的大小处理出来. 代码 #include<iostream> #include<cstdio> #include<cstr ...