因为借助HTTP协议,我可以通过全球全部的website和浏览器获取我想要的数据。而我要加装自己是一个浏览器,向server发送HTTP请求,进而请求到网页文件。之后按照HTML的格式规范解析其中的图片、链接、表单,获得我感兴趣的内容。
得到链接标签之后,我会进一步爬取链接背后的内容,这样往复,用不了多长时间,我就能爬完这个站点中开放出来的所有内容。
都说盗亦有道,当然了,咱们爬虫也有底线。在我们这一行混,必须遵守一个规矩——Robots协议。robots.txt的文件被放在网站的根目录下充当门神,里面写上哪些目录禁止访问,爬虫就会绕道而行,robots里面的内容长这样:
User-agent: *
Disallow: /a/
Disallow: /b/
Disallow: /c/
如果你以为只有在程序员之间存在鄙视链,那你就错了,实际上他们的作品之间也存在鄙视链。
在这个星球上大佬级别的爬虫当属谷歌搜索引擎,当它想要爬取什么内容的时候全球所有网站都巴不得被爬取。全球几乎所有的网站都想被收录到搜索引擎的花名册,进而自己的网站可以被广大网民搜索到。
当然总有一些不法爬虫,有一些爬虫不遵守robots协议,随意乱爬,一天天只知道爬美女图片,把人家server都爬崩溃了。
但是像我这样老实本分的爬虫,日常就是爬取一些网站数据,比如购物网站、点评网站。但这些网站也不待见我们。
为了爬到数据,我们与网站之间一直在对峙。
再说说反爬虫
那些网站不待见咱们这些爬虫是因为心疼自己的网络带宽。
况且,我们不像搜索引擎爬虫可以给他们的网站带来流量,却会占用他们的服务器一部分性能,占据他们珍贵的流量,那些可都是雪花银,想想就揪心啊?
这些网站为了对付我们,采取了一个措施:在HTTP请求中的user-agent字段识别出这是爬虫,就不会理睬我们了。user-agent是HTTP协议中用来代表客户端名字的一个字段。在我刚入行时没什么经验,就经常被识破。
最后我只能换一身行头,冒充浏览器,更有甚者圈子里有个兄弟冒充搜索引擎,我不会像他那么没有底线。
没多久这招就失灵了,那些网站升级了策略,通过我们的行为来识别是不是真的浏览器。我们毕竟是程序,那速度比人类点击快多了,如果网站发现我们在短时间内发起了居多请求,那就掐断连接。被逼无奈,我只好降低爬取的频率。
在江湖漂,难免要挨刀,有些网站会设下陷阱,静静等候我们这些爬虫到来。他们在网页里面放上一些假的图片作为诱饵,实际上可能是只有几个像素、肉眼无法识别的假图片,但是我们不知道啊,对我来说只要是《img》标签就是图片。记得,有一次我一访问就中计了,立刻被拉入黑名单!
上次栽了跟头,但我没有退缩,翻越高墙,出来后我要变得更强大。
听说圈子里有些大佬用上了分布式技术,组团去爬,很多个IP地址,其中一个或者几个封了也不用怕,我真是很羡慕。慕名而去,我学会了这项本领,黑夜看到了我狰狞的笑。
前端后端
在我的爬虫生涯中遇到过一些奇怪的网站,网页中有数据,但是访问拿到的HTML中啥也没有。
原来这种网站用了前后端分离开发的技术。数据是浏览器通过单独的API接口拿到后再动态加载出来,而不是渲染到网页中,难怪我拿到的只是一个空壳子。
为了拿到数据,我只好也学着去请求这些数据接口,不过因为这些网站都有API网关,会检查请求的Token或者Authorization之类的认证字段,再加上我不知道他们的接口参数格式,导致我经常拿不到数据。直到最近两年,我拿到的网页HTML越来越简单了,在浏览器中丰富多彩的页面,一查看源代码竟然只有简单几行,真是见了鬼了!
有一天,一个前辈告诉我,现在流行单页应用SPA了,页面全都是在前端动态生成的,拿到的HTML根本没有价值。这简直欺人太甚了!
没办法了,我决定变成一个真正的浏览器。
这个内嵌的浏览器没有界面,专门为我服务,嵌入到我的程序中,让他去真正地渲染网页,渲染完成后我再去取数据。这是真正意义上模拟人类去访问网站了,再也不用模拟繁琐的数据接口访问,也不用担心单页应用,前端渲染就前端渲染,我再也不怕了!
难搞的验证码
到后来,不知道是谁发明的,网站们纷纷用上了一种叫验证码的技术,给我们出了难题。开始的验证码一般都是些简单的数字、英文字符做了些变形,就像这样:
江湖上很快有大佬教我用文字识别技术OCR来自动识别这种验证码,我也折腾了一下,费了老大劲终于可以识别出来,准确率不敢说100%,99%还是有的。
没多久这验证码就变得越来越复杂,什么汉字识别,物体识别,滑动解锁,一个比一个难,像是简单的小游戏。你瞧瞧下面这些验证码,这不是故意为难爬虫吗?
这些网站的反爬虫技术越来越先进,我们能发挥的空间被一步步挤压。内忧外患不断,不少爬虫兄弟失业的失业,转行的转行,爬虫这碗饭,真是越来越不好吃了。据说有个愣头青爬虫强行爬取一家公司的网站,最后把人公司server给爬崩溃了,他还被抓了起来。
责任编辑人:CC
-
爬虫
+关注
关注
0文章
82浏览量
6834
原文标题:详解什么是爬虫?
文章出处:【微信号:c-stm32,微信公众号:STM32嵌入式开发】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论