个人笔记,如有侵权,联系必删。
Scrapy是一个基于Python的web爬虫框架,用于爬取web站点,并从中提取结构化的数据。
一:为什么用Scrapy,优势是什么?
- 容易构建大规模的抓取项目
- 异步处理请求,速度非常快
- 可以自动调节爬取速度
- 可以使用Scrapy-redis进行分布式爬取
- 默认深度优先
- 基于twisted异步io框架,是纯python实现的爬虫框架,性能是最大的优势
二:Scrapy的缺点
- 拓展性比较差
三:Scrapy的运行机制
- 从start_urls里面获取第一批url发送请求,请求由请求引擎给调度器入请求队列,获取完毕后,调度器将请求队列交给下载器去获取请求对应的相应资源,并将相应交给自己编写的代码做提取处理,如果提取出需要对的数据,则交给管道处理,如果提取出url,则继续执行之前的步骤,直到队列里没有请求。
四:常见的反爬措施
- 通过请求头headers来反爬虫,添加headers
- ip检测,设置ip池
- 滑块,可通过selenium+phantomJS无头浏览器实现
- 验证码,使用图像识别API进行验证码识别,调用打码网站API,模拟登陆手动辅助;
五:整体架构
六:Scrapy的去重原理
需要将dont_filter设置为False开启去重,默认为False;
七:Scrapy中间件有几种,你用过哪些中间件
中间件理论上有三种:
Schduler Middleware,
Spider Middleware,
Downloader Middleware
1,爬虫中间件Schduler Middleware
主要功能是在爬虫过程中进行一些处理
2,下载器中间件Downloader Middleware
主要功能在请求到网页后,页面被下载时进行一些处理
八:HTTP和HTTPS的区别
HTTP:超文本传输协议,是一个基于请求与响应,无状态的,应用层协议,常基于TCP/IP协议传输数据。
特点:
- 无状态,协议对客户端没有状态存储
- 无连接,每次请求都要和服务器重新建立连接
- 简单快速
- 使用明文
HTTPS:是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通讯,利用SSL/TLS建立全信道,加密数据包。主要目的是提供对网站服务器的身份认证,同时保护交互数据的隐秘与完整性
特点:
- 内容加密:采用混合加密技术,中间者无法直接查看明文内容
- 验证身份:通过证书认证客户端访问的是自己的服务器
- 保护数据完整性:防止传输的内容被中间人冒充或者篡改