帮你深入了解爬虫与反爬虫技术

优采云 发布时间: 2020-06-24 08:02

  爬虫是哪些呢,简单而片面的说,爬虫就是由计算机手动与服务器交互获取数据的工具。爬虫的最基本就是get一个网页的源代码数据,如果更深入一些,就会出现和网页进行POST交互,获取服务器接收POST恳求后返回的数据。一句话,爬虫拿来手动获取源数据,至于更多的数据处理等等是后续的工作,这篇文章主要想说说爬虫获取数据的这一部分。爬虫请注意网站的Robot.txt文件,不要使爬虫违规,也不要使爬虫对网站造成伤害。

  

  反爬及反反爬概念的不恰当举例

  基于好多诱因(如服务器资源,保护数据等),很多网站是限制了爬虫疗效的。

  考虑一下,由人来充当爬虫的角色,我们如何获取网页源代码?最常用的其实是右键源代码。

  网站屏蔽了右键,怎么办?

  

  拿出我们做爬虫中最有用的东西 F12(欢迎讨论)

  同时按下F12就可以打开了(滑稽)

  

  源代码下来了!!

  在把人当成爬虫的情况下,屏蔽右键就是反爬取策略,F12就是反反爬取的方法。

  讲讲即将的反爬取策略

  事实上,在写爬虫的过程中一定出现过没有返回数据的情况,这种时侯其实是服务器限制了UA头(user-agent),这就是一种太基本的反爬取,只要发送恳求的时侯加上UA头就可以了…是不是很简单?

  其实一股脑把须要不需要的Request Headers都加上也是一个简单粗暴的办法……

  有没有发觉网站的验证码也是一个反爬取策略呢?为了使网站的用户能是真人,验证码真是做了很大的贡献。随验证码而至的,验证码识别出现了。

  说到这,不知道是先出现了验证码识别还是图片辨识呢?

  简单的验证码现今辨识上去是极其简单的,网上有太多教程,包括稍为进阶一下的去噪,二值,分割,重组等概念。可是如今网站人机辨识早已越发的惊悚了上去,比如这些:

  

  简单述说一下去噪二值的概念

  将一个验证码

  

  变成

  

  就是二值,也就是将图片本身弄成只有两个色彩,例子很简单,通过python PIL库里的

  

Image.convert("1")

  就能实现,但若果图片显得更为复杂,还是要多思索一下,比如

  

  如果直接用简单形式的话 就会弄成

  

  思考一些此类验证码应当如何辨识?这种时侯 去噪 就派上了好处,根据验证码本身的特点,可以估算验证码的底色和字体之外的RGB值等,将这种值弄成一个颜色爬虫技术,将字体留出。示例代码如下,换色即可

  for x in range(0,image.size[0]):

  for y in range(0,image.size[1]):

  # print arr2[x][y]

  if arr[x][y].tolist()==底色:

  arr[x][y]=0

  elif arr[x][y].tolist()[0] in range(200,256) and arr[x][y].tolist()[1] in range(200,256) and arr[x][y].tolist()[2] in range(200,256):

  arr[x][y]=0

  elif arr[x][y].tolist()==[0,0,0]:

  arr[x][y]=0

  else:

  arr[x][y]=255

  arr是由numpy得到的,根据图片RGB值得出的矩阵,读者可以自己尝试建立代码,亲自实验一下。

  细致的处理过后图片可以弄成

  

  识别率还是很高的。

  在验证码的发展中,还算清晰的数字字母,简单的加减乘除,网上有轮子可以用爬虫技术,有些难的数字字母汉字,也可以自己造轮子(比如前面),但更多的东西,已经足够写一个人工智能了……(有一种工作就是识别验证码…)

  再加一个小提示:有的网站PC端有验证码,而手机端没有…

  下一个话题!

  反爬取策略中比较常见的还有一种封IP的策略,通常是短时间内过多的访问才会被封禁,这个很简单,限制访问频度或添加IP代理池就OK了,当然,分布式也可以…

  IP代理池->左转Google左转baidu,有很多代理网站,虽然免费中能用的不多 但其实可以。

  还有一种也可以算作反爬虫策略的就是异步数据,随着对爬虫的逐步深入(明明是网站的更新换代!),异步加载是一定会遇到的问题,解决方法仍然是F12。以不愿透漏姓名的网易云音乐网站为例,右键打开源代码后,尝试搜索一下评论

  

  数据呢?!这就是JS和Ajax盛行以后异步加载的特性。但是打开F12,切换到NetWork选项卡,刷新一下页面,仔细找寻,没有秘密。

  

  哦,对了 如果你在听歌的话,点进去能够下载呢…

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线