针对非常多学习计算机与编程的朋友来讲,(网络)爬虫技术
是一个又熟练又奥秘的名字。它给人的感觉,就像是一门无所不可的技术,经过它能够获取到网络上各样数据。爬虫是不是真的这么神呢,本文将会以最直白的方式带你认识爬虫的今世前生。
爬虫——互联网的原住民
爬虫的起源非常的早,能够说互联网诞生没多久,爬虫就显现了,绝对的互联网原住民(土著)。
初期的互联网,可不像此刻这么蓬勃与便利。例如咱们此刻习以为常的各样搜索引擎:百度、谷歌之类的,那时还是不存在的。互联网上只是一个一个的孤立的网站,这些网站中的数据都是分布开的,拜访起来很不方便。
有人就想,能不可写个自动运行程序,把这些网站上的数据都收集起来,方便大众来获取呢?
说干就干,于是最早的爬虫程序就诞生了,这些爬虫程序能够抓取互联网上的所有网页,而后将所有页面上的内容复制到数据库中,再对内容进行处理、归类、制作索引…以方便用户查阅。
1998年的Google网站
为啥咱们在百度上搜索一下关键词,立刻就会有非常多结果出来,指向区别的网站或页面?
由于在这些搜索引擎的背面,便是爬虫程序在日夜一直的在互联网上收集数据。
因此:爬虫——搜索引擎背面的"男人"
爬虫(Spider)名字的来历
爬虫便是一段执行的程序,能够自动的从网页上获取信息并保留。那为何这类程序被命名为爬虫呢。
这就要从爬虫的英文名说起了。在英文中,爬虫程序被命名为"spider",没错便是蜘蛛的意思。
试想一下,一个小虫子,持续在网(络)上爬过来爬过去,看到猎物(数据)就兴高采烈地收集起来,“蜘蛛”是不是非常的形象?
因此,写爬虫程序的程序员不该该被叫做程序员,而是“蜘蛛侠”(spiderman)!
爬虫程序的实现原理
其实爬虫程序的实现原理并不繁杂,便是模拟咱们人类拜访网页的过程。
咱们平常拜访网页,便是在浏览器(browser)中输入目的网址,而后浏览器就会向目的网站发起一个HTTP请求(request),网站服务器(web server)收到这个拜访请求之后,就会把页面以HTTP响应(response)的方式,返回给浏览器。浏览器再将HTTP响应的数据渲染成咱们人类看到的页面。
爬虫程序便是将以上人类的操作,用程序进行了实现。
一般,爬取网页数据时,只需要2个过程:
打开网页→将详细的数据从网页中复制并导出到表格或资源库中。
简单来讲便是,抓取和复制。
程序的好处就在于,它的执行速度非常的快,人打开一个页面要花5-10秒的时间。在一样的时间里,一个爬虫程序,可能已然拜访完成百上千,乃至于更加多的页面了!
爬虫的另一面
然则正是由于爬虫程序执行的速度非常快,因此它会带来一个问题。
咱们晓得,网站的服务器处理用户请求的能力是有限的。倘若短期内,有海量的用户请求涌入,超出了服务器的处理能力,就会引起服务器故障,俗叫作:服务器”宕机”, 或更形象的说服务器“爆”了、“挂”了。
服务器宕机的平常画面
因此,一方面,作为爬虫程序的研发者(蜘蛛侠),要重视程序爬取网站信息的频率,避免对网站的正常业务产生明显的影响。
另一方面,网站亦加入了有些技术手段来限制拜访的频率,以及对拜访者的身份进行校验(看拜访的到底是人类还是爬虫程序!)。
令人发指的验证码
验证码便是被网站广泛运用的一种技术,用来辨别拜访者是人类还是爬虫程序。
而且随着程序自动识别验证码的能力的提高,网站的验证码亦起始越来越变态了,登峰造极的便是传说中的12306网站的购票验证码,别说是程序了,就连脸盲症病人的人类亦分不清啊!
关于爬虫的“君子协议”
有些网站,尤其是商场网站,对爬虫亦是又爱又恨。
一方面,期盼网页上的机构信息能在互联网上有更高的揭发度、更易被搜索引擎获取,但另一方面,又担心机构的有些机密的数据被泄漏。
因此为认识决这个问题,国际互联网制定了一个关于爬虫的“君子协议”,约定网站上的那些内容能够被爬取,那些内容不行。
Robots协议(爬虫协议)的全叫作是“网络爬虫排除标准”(RobotsExclusion Protocol),网站经过Robots协议告诉搜索引擎那些页面能够抓取,那些页面不可抓取。该协议是国际互联网界通行的道德规范,虽然无写入法律,然则每一个爬虫都应该遵守这项协议。
以淘宝网的robots.txt为例:
以Allow 项的值开头的 URL 是准许爬虫程序拜访的。例如,Allow:/article 准许百度爬虫引擎拜访 /article.htm等。
以Disallow 项为开头的链接是不准许百度爬虫引擎拜访的。例如,Disallow:/product/ 不准许百度爬虫引擎拜访 /product/ 等。
最后一行,Disallow:/ 禁止百度爬虫拜访除了 Allow 规定页面外的其他所有页面。
因此你是不可从百度上搜索到淘宝内部的制品信息的。
但有句话说得好,防君子不防小人,总会有些不守规矩的存在,于是就有了反爬虫技术。
爬虫与反爬虫
爬虫与反爬虫便是“矛”与“盾”的关系。反爬虫便是想办法阻止爬虫程序无节制的爬取网页上信息的技术。
有非常多有趣的技术能够阻止爬虫的爬取,其中不乏有些大开脑洞的方式,让人不仅啧啧叫作奇。其实上文说到的验证码技术,亦是一种反爬虫的手段,除此之外,还有文本混淆反爬虫、动态渲染反爬虫、信息校验反爬虫、代码混淆反爬虫……等等技术。
由于篇幅原由,这些技术在本文中就不一一为大众介绍了,请期待后续的文案吧!
|