Python 爬虫(一):爬虫假装

1 简介

对于一些有必定规模或盈利性质比较强的网站,几乎都会作一些防爬措施,防爬措施通常来讲有两种:一种是作身份验证,直接把虫子挡在了门口,另外一种是在网站设置各类反爬机制,让虫子知难而返。web

2 假装策略

咱们知道即便是一些规模很小的网站一般也会对来访者的身份作一下检查,如验证请求 Headers,而对于那些上了必定规模的网站就更不用说了。所以,为了让咱们的爬虫可以成功爬取所需数据信息,咱们须要让爬虫进行假装,简单来讲就是让爬虫的行为变得像普通用户访问同样。浏览器

2.1 Request Headers 问题

为了演示我使用百度搜索 163邮箱服务器

使用 F12 工具看一下请求信息异步

在上图中,咱们能够看到 Request Headers 中包含 Referer 和 User-Agent 两个属性信息,Referer 的做用是告诉服务器该网页是从哪一个页面连接过来的,User-Agent 中文是用户代理,它是一个特殊字符串头,做用是让服务器可以识别用户使用的操做系统、CPU 类型、浏览器等信息。一般的处理策略是:1)对于要检查 Referer 的网站就加上;2)对于每一个 request 都添加 User-Agent。svg

2.2 IP 限制问题

有时咱们可能会对一些网站进行长期或大规模的爬取,而咱们在爬取时基本不会变换 IP,有的网站可能会监控一个 IP 的访问频率和次数,一但超过这个阈值,就可能认做是爬虫,从而对其进行了屏蔽,对于这种状况,咱们要采起间歇性访问的策略。工具

一般咱们爬取是不会变换 IP 的,但有时可能会有一些特殊状况,要长时间不间断对某网站进行爬取,这时咱们就可能须要采用 IP 代理的方式,但这种方式通常会增长咱们开销,也就是可能要多花钱。网站

3 总结

有些时候咱们进行爬取时 Request Headers 什么的已经作好了假装,却并未获得如愿以偿的结果,可能会出现以下几种状况:获得的信息不完整、获得不相关的信息、得不到信息,这种状况咱们就须要研究网站的防爬机制,对其进行详细分析了。常见的几种我列一下:操作系统

1)不规则信息:网址上会有一些没有规则的一长串信息,这种状况一般采用 selenium(模拟浏览器,效率会低一些) 解决;
2)动态校验码:好比根据时间及一些其余自定义规则生成,这种状况咱们就须要找到其规则进行破解了;
3)动态交互:须要与页面进行交互才能经过验证,能够采用 selenium 解决;
4)分批次异步加载:这种状况获取的信息可能不完整,能够采用 selenium 解决。代理


在这里插入图片描述