我想很多人入门python是图片爬虫,就是HTTP请求,保存一下图片,用python实现非常快。网上很多爬虫的教程就讲到这里,实际上很单一,看了跟没看没什么区别,都是找一下网页的规律,然后BeautifulSoup解析一下网页,再使用request做HTTP请求,可能有些还用了多线程多进程,可是都没有考虑到反爬问题。很多有价值的数据都会有反爬,那么很多Python爬虫资料都没什么用。这里分享一下我听闻过的反爬和反反爬。

1 反爬:判断是否为浏览器(最初级反爬)

反反爬:伪造请求头headers,其实就是为User-Agent赋值。

2 反爬:弹出验证码

反反爬:

  • 手动输入验证码,就是将验证码图片下载到本地,然后通过PIL库显示一下,当爬虫遇到验证码时会显示出来,我们手动填一下。
  • 使用打码平台,将验证码对接到相应的打码平台,平台会帮我们输入正确的验证码,平台怎么输入正确验证码的呢?它其实就是租人来填,填多少个有相应的金额可以获取。
  • 使用Python的图像识别库,如PIL,对验证码图片进行处理,让词表库匹配一下,最后自动填写。

我有一个想法就是通过CNN卷积神经网络对验证码中的图片,将验证码图片分割成一个个的字符,获得足够多的字符就可以喂养给CNN,当做训练数据,CNN对图像识别的准确率还是很高的,有兴趣的人可以看看CNN识别手写字体MNIST数据集,目前我还没有这样弄过。

当然还有一些很变态的验证码,比如Google的验证码,要你找出图片中的店铺之类的,这个没想法,欢迎大神提点,对于滑动验证码已经有人做了比较成功的尝试。

3 反爬:需要登录才能获得想要的数据

要弄通这一个的反反爬我觉得有必要弄明白登录的一些知识,如cookies、session、token。

现在常见的就是session和token,因为将用户敏感信息存到cookies中非常不安全。

session其实非常简单,就是用户信息存到服务器中,将对应这个用户信息的唯一id发放给用户,一般存到cookies,理解了这种登录模式,使用反反爬就明确了,将自己正确登录后的cookies保存下来,放到爬虫的cookies中,每次请求都带上,那么服务器就会认为你是登录的用户。

token其实也不难理解,很多网站在用户登录成功后,会使用唯一的token来标识不同的用户,那么每次请求头中包含这个token就OK了,这里要注意一下token的格式。

4 反爬:JavaScript逻辑复杂化界面

很多时候界面的数据不是静态的,而是动态的,如通过ajax获得的数据,如果没有使用JavaScript来操作这些数据,那么我们自己访问这个ajax接口就可以获得数据了,那么有些网站,返回的数据非常奇怪,只有通过网站的JavaScript处理后,才是人看的数据,这就非常尴尬了,那么一般有两种方式

反反爬:

  • Python模仿JavaScript中的逻辑,因为都可以获得原始的数据,只是人家的数据通过JavaScript处理后才是正常的,那么我们可以使用python实现JavaScript中的逻辑,就可以获得数据了,当然这对JavaScript功底有一定的要求。
  • PhantomJS+Selenium,这个其实就没什么好说的了,就会利用自动测试,使用浏览器来获得数据,获得的这些数据都是经过对方JavaScript处理过的可用数据,就是有点慢,不适合分布式爬虫,当然有人说PhantomJS是可以被识别出来的。

5 反爬:基于用户行为

因为爬虫的数据非常快,那么一个用户不可能在一秒都没有就看完这个页面,所以认为你是爬虫,很多网站会对访问频率有个限制,如果你访问的太快,就会被认为不是一个人,那么测试出这个边界就比较重要了,有了边界,就可以最大效率的爬取网站

反反爬:

  • 模拟用户行为

用户平时怎么浏览,你就怎么做,比如访问速度慢点,或者没爬完一个界面,等个1分钟,这种方式的效率非常慢。

  • 多IP多账号

一种暴力却很有效的方式,通过多个IP来访问一个网站,这个IP挂了,立刻有另一个IP顶上,那么很多初学者会使用一些代理IP。

以上是我的一些经验总结,如有不足之处欢迎指出。

python爬图片_网络爬虫经验:反爬和反反爬相关推荐

  1. Python网络爬虫数据采集实战:同花顺动态网页爬取

    前文的爬虫都建立在静态网页基础之上,首先通过请求网站url获取到网页源代码.之后对源代码进行信息提取进而存储即可,本文则针对动态网页进行数据采集,首先介绍Ajax相关理论,之后实战爬取同花顺动态网页, ...

  2. python新闻聚合_基于Python的新闻聚合系统网络爬虫研究

    基于 Python 的新闻聚合系统网络爬虫研究 左卫刚 [摘 要] 摘 要 本研究旨在创建一个能够从不同页面布局中提取数据的开源爬 虫,其中包括网络爬虫. API .网络爬虫调度器以及 Socket ...

  3. python代码大全p-Python网络爬虫实战项目代码大全(长期更新,欢迎补充)

    WechatSogou[1]- 微信公众号爬虫.基于搜狗微信搜索的微信公众号爬虫接口,可以扩展成基于搜狗搜索的爬虫,返回结果是列表,每一项均是公众号具体信息字典.[1]: https://github ...

  4. python爬取地图地址_网络爬虫-python爬取高德地图地点

    python爬取你想要的数据,近期由于业务需求,用python爬取了高德地图一些地点的数据,爬出来数据大致情况如下: image 下面是基本流程: 2.安装网络爬取第三方库,主要是下面三个(pip i ...

  5. Python高级特性与网络爬虫(一):使用Ajax请求爬取用户微博内容和python多进程爬取用户图片

    最近阅读了崔庆才写的<Python3网络爬虫开发实战>,系统地学习一下利用Python写网络爬虫.由于这本书出版时间是2018年,很多书中案例涉及的网站已经改版,基本上每个案例都需要自己再 ...

  6. Python网络爬虫(四):selenium+chrome爬取美女图片

    说明: Python版本:Python IDE:PyCharm chrome版本:我的版本63 chromedriver.exe:因为是模拟浏览器访问,chrome需要再下载一个驱动,具体方式在我的上 ...

  7. python爬虫爬图片教程_Python爬虫入门教程 5-100 27270图片爬取

    获取待爬取页面 今天继续爬取一个网站,http://www.27270.com/ent/meinvtupian/ 这个网站具备反爬,so我们下载的代码有些地方处理的也不是很到位,大家重点学习思路,有啥 ...

  8. 【Python网络爬虫实战篇】使用selenium+requests爬取下载高清源视频:关于爬取m3u8文件链接解析为ts视频合并成mp4视频的分析实战

    这两天博主在摸鱼时,偶然间接触到了流媒体的概念,一时间来了兴致.再加上之前博主有着七.八年的视频制作经验,深知视频素材获取的不易.因此,打算利用自己所学的python网络爬虫的知识,通过编写代码实现获 ...

  9. 爬虫推特数据分析的外文文献_什么是网络爬虫?有什么用?怎么爬?看完这篇文章你就明白了...

    源:Python架构师 https://dwz.cn/LI7NNc4g 一.什么是网络爬虫 随着大数据时代的来临,网络爬虫在互联网中的地位将越来越重要.互联网中的数据是海量的,如何自动高效地获取互联网 ...

最新文章

  1. 一种形式的两个提交按钮
  2. 第三章 线性代数回顾-机器学习老师板书-斯坦福吴恩达教授
  3. 测试点2错的来:1033 旧键盘打字 (20分)
  4. 记录一次nginx配置vhost的小bug
  5. 前端学习(2965):路由的参数传递
  6. 华为mate20能用鸿蒙吗,华为mate20可以用5g网络吗
  7. 打造扛得住的MySQL数据库架构-第一课--影响数据库性能的因素
  8. 力扣172.阶乘后的零
  9. FFMPEG基于内存的转码实例
  10. python动态运行py代码_Python 动态执行
  11. oracle for redhat 5.4 x64安装
  12. android剪贴板清空,如何访问和清除Android手机上的剪贴板
  13. 电脑在登陆界面如何打开计算机管理,无线路由器管理界面如何登录 无法进入管理界面怎么办...
  14. 网络抖动多少ms算正常_如何测试延时、抖动、丢包率
  15. 3D卷积“LP-3DCNN: Unveiling Local Phase in 3D Convolutional Neural Networks”
  16. EasyNVR摄像头网页无插件直播H5、谷歌Chrome直播方案中如何降低播放延迟问题
  17. 面试专题——Redis
  18. 真正解决办法:WINDOWS7/WIN7提示错误:无法启动此程序,因为计算机中丢失D3DCOMPILER_47.dll。尝试重新安装该程序以解决此问题
  19. mysql 数据表的复制
  20. 宝塔面板SSL证书显示不安全?这里我教你宝塔SSL证书如何配置及开启HTTPS访问的操作方法

热门文章

  1. PyTorch 多机多卡训练:DDP 实战与技巧
  2. 目标检测比赛中的tricks集锦
  3. 周志华:“数据、算法、算力”,人工智能三要素在未来还要加上“知识”
  4. 速览!CVPR 2020 最新论文
  5. 我在 GitHub 上看到了一个丧心病狂的开源项目!治好了我的拖延症
  6. Redis环境配置(核心配置选项)
  7. 安装node.js 附带node.js以及npm初步认识 设置淘宝/npm镜像 命令
  8. 计算器,利用灰度图的顶帽扣出数字
  9. CSDN如何删除自己不用的分类(亲测有效!)
  10. 使用OpenCV自动去除背景色