爬虫概述
爬虫(网络蜘蛛或网络机器人):模拟人操作客户端(浏览器),向浏览器发起网络请求,抓取网页数据内容。(简单来说就是从互联网上抓取对我们有用的信息)
爬虫可以使用PHP,c++,Java,python,go进行编写(python 语法简单、学习成本低、对新手比较友好,具有大量支持爬虫的库和框架)
爬虫的基本流程:
- 浏览器提交请求——>下载网页代码——>解析成页面
- 浏览器发送请求——>提取有用数据——>存放于数据库文件中
爬虫分类
通用爬虫:抓取系统重要组成部分,抓取一整张页面数据
功能:访问网页–>抓取数据–>数据处理–>提供检索服务
工作流程:
- 给定一个起始URL,存于爬取列表中
- 爬虫程序从队列中取出url,爬取数据
- 解析爬虫数据,获取网页内所有url,放入爬虫列表
- 重读第二个步骤
聚焦爬虫:建立通用爬虫只上,抓取数据特定的局部内容
URL管理器:防止重复爬取URL和循环抓取URL,实现URL管理器主要用三种方法,通过内存、数据库、缓存库来实现
协议
ols:七层:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
http协议:超文本传输协议
http协议是服务器和客户端进行数据交互的一种方式,用于从网络传输超文本数据到本地浏览器的传送协议,它能高效而准确地传送超文本协议(目前使用最广泛的是http1.1版本)
https协议:加密的http协议
https相对于http更加安全,即http下下加入ssl层,简称https
https的安全体现在ssl加密行为,即通过https协议传输的数据都是经过ssl加密的
https作用:
- 建立一个通道来保证数据传输的安全
- 确认网站真实性,反是使用https的网站都可点击浏览器地址栏的锁头标志来查看网站认证的真实信息
常用请求头信息
User-Agent:请求载体的身份标识
Connection:请求完毕后,确认是否断开
常用响应头信息
Conter-Type:服务器响应回客户端的数据类型
加密方式:
- 对称秘钥加密:对称密钥加密又叫专用密钥加密或共享密钥加密,即发送和接收数据的双方必使用相同的密钥对明文进行加密和解密运算。
- 开密钥加密:公开密钥加密也称为非对称密钥加密(asymmetric cryptography),是一种密码学算法类型。该加密算法使用两个不同的密钥:加密密钥和解密密钥
证书秘钥加密
https加密就是结合对称加密和非对称加密两种方式
robots.txt协议
robots协议是有种存放于网站根目录下的ASCLL编码的文本文件,通常用于告诉用户哪些内容是可以爬的,哪些是不可以爬取的(约定俗成的君子协议,不能保护网站隐私)
反爬机制和反反爬机制
反爬机制:门户网站可以通过制定相应策略,防止爬虫程序集进行网站数据的爬取
常见反爬机制:robots、US伪装、代理、Cookie、动态变化的请求参数、验证码、图片懒加载、js混淆、js加密等
反反爬策略:爬虫程序可以通过制定相关的策略或技术手段破解门户网站中反爬机制,从而获取门户网站相关数据
服务器常见端口
- ftp: File Transfer Protocol的缩写, 即文件传输协议. 端口:21
- ssh: Secure Shell的缩写, 用于远程登录会话. 端口:22
- MySQL: 关系型数据库, 端口:3306
- MongoDB: 非关系型数据库, 端口:27017
- Redis: 非关系型数据库, 端口:6379