01 爬虫简介
爬虫简介
1. 爬虫概述
-
什么是爬虫?
- 通过编译程序,让其模拟浏览器上网,然后再互联网中爬取数据的过程
- 关键词抽取:
- 模拟:浏览器就是一个纯天然最原始的一个爬虫工具
- 爬取:爬取一整张页面源码数据/爬取一整张页面中的局部数据
- 关键词抽取:
- 通过编译程序,让其模拟浏览器上网,然后再互联网中爬取数据的过程
-
爬虫的分类:
- 通用爬虫
- 要求我们爬取一整张页面源码数据
- 聚焦爬虫
- 要求爬取一张页面上的局部数据
- 聚焦爬虫一定是建立在通用爬虫基础之上的
- 要求爬取一张页面上的局部数据
- 增量式爬虫
- 用来检测网站数据的更新情况,以便爬取到网站最新更新出来的数据
- 分布式爬虫
- 提高爬虫效率
- 通用爬虫
-
反爬机制:
- 是作用到门户网站中,如果网站不想爬虫轻易爬取到数据,它可以制定相关的机制或者措施来阻止爬虫程序爬取数据
-
反反爬策略
- 是作用于爬虫程序中,我们爬取可以制定相关的策略破解反爬机制从而爬取到相关数据
2. 反爬机制与反反爬策略:
# 反爬机制:
1. robots协议(第一个反爬机制):
是一个纯文本的协议,协议中规定了该网站中哪些数据可以被哪些爬虫爬取,哪些不可以被爬取。
2. 响应数据乱码
3. UA检测
网站后台会检测请求对应的User-Agent,以判定当前请求是否为异常请求。
4. ajax 动态传输数据(发起ajax请求的)
5. 懒加载(广泛运用于图片网站)
只有当图片被显示在浏览器可视化范围之内才会将img的伪属性变成真正的属性。如果是requests发起的请求,requests请求是没有可视化范围,因此我们一定要解析的是img伪属性的属性值(图片地址)
6. cookie
有些网站需要在headers中携带cookie才能将正确的数据返回出来
7. 异常请求
爬虫对某网站发出高频请求(一分钟几百次请求),网站会将其当作异常请求,从而封ip。这些需要看别人后端的设计,有些如果用同一个ip去访问网站的多页,可能导致获取不到数据
8. 登录模块
有些数据需要在登录之后才可以看到数据
# 反反爬策略:
1. 君子不妨小人(不遵从该协议即可)
2. response.encoding = 'utf-8' / response.encoding = 'gbk'
爬取网站时需要看该网站编码是什么,有些是gbk
3. UA伪装
a. 被作用到了到部分的网站中,日后我们写的爬虫程序都默认带上UA检测操作。
b. 从抓包工具中捕获到某一个基于浏览器请求的User-Agent的值,将其伪装作用到一个字典中,将该字典作用到请求方法(get,post)的headers参数中即可。
4. 通过抓包工具,看到响应中没有数据,可以通过全局搜索,看关键词出现在了哪一个数据包中。找到数据包之后,就可以看到正确的url,请求方式,请求参数,响应数据
a. 全局搜索不一定能找到数据包,因为有些数据通过了加密
5. 通过分析网页之后,知道是图片懒加载的话,就必须将img伪属性的属性值给解析到。
6. 通过手动(将抓包工具中的cookie粘贴到headers中,有时效)或者自动(通过session自动处理cookie)的方式将cookies添加到请求头中
7. 被封ip之后,使用代理操作,可再次访问网站。这样就相当于那代理的ip再次访问网站而不是自己的ip。
8. 模拟登录,首先去注册该网站,然后打开抓包工具,查看登录时客户端向服务端发送了哪些参数,然后自己模拟出来。有些参数是动态的(验证码),需要对图片进行一个动态识别(采用超级鹰等),然后将其加到请求参数中。如果看到一些混乱的键值对参数,而不是我们输入数据,我们可以先判断这些参数是不是动态的(多登录几次,看看value值是否一致),如果不一致,就去首页的源码中搜索它的key,获取到它的value;没有的话就去抓包工具中进行全局搜索,找到它的key,获取到它的value。
再坚持一下下,会越来越优秀

浙公网安备 33010602011771号