网络爬虫,是用来采集信息的程序的昵称之一,英文称为Web Crawler;也有称之为Web Scrper,网络铲,有点像盗墓笔记中的洛阳铲,还有一个名字,叫做网络蜘蛛,WebSpider,这个名字更形象些。还有一个名字叫Robots,网络机器人,这个名字适合现在的人工智能时代。
网络爬虫是做什么的?它和Google、百度们有啥区别?首先爬虫能做搜索引擎做不到的事,比如今天搜索“金三胖”的关键字,搜索引擎们拒绝服务。而用某个社区的搜索,你可能能搜索到和金先生的文章或帖子;再比如搜索到成都的飞机,百度能给我们返回好几十页的结果,它们只知道这些网站会显示什么内容,却不能在国内航班线路返回精确的结果。
有的网站提供开放API或RSS之类,我们调用API来获取当然更方便,但是很多内容并没有开放API,尤其是国内。
原因是我们要的数据,网站API开放的程度有限,包括内容或调用次数,或者根本不提供,或者总是出问题等。
我们通过人工手段去一页页的通过浏览器获取,基本是需要天文时间,而使用爬虫可以分分钟获取到几万到几十万个页面或数据。
爬虫可以运行在浏览器,也可以运行在命令行。通常是通过某个网站URI结点,顺着超链接开始爬,把有用的内容抓下来。
写网络爬虫并不限于某个语言,使用Perl,PHP,Python,Java,C#,Go等可以做得很好。语言设计哲学不同,行为方式也各式各样,都是解放人类的好工具。
我曾用Perl抓取过当年的阿里巴巴,后来阿里限制了页面打开时间,我们加入超时时间接着爬,后来他们又加入了用户会话Session,我们就注册帐号,带着Cookie再抓,帐号被封了几个,就用很多个代理主机抓。如此这般,一个网站的内容基本都取到了。
后来用PHP写爬虫,跑在本地,加上个自动挂断与连接ADSL的功能,可以自动化做很多事,不用我们操太多心。后来我在某个分类信息网站,做了更多抓取的事,对方也抓我们,互相补充内容。在做电子商务的时候,监控竞争对手网站的商品价格,做市场预测,也是爬虫派上很大的用场。
还有机器语言翻译,医疗诊断行业。当然,更多的场景应用是对新闻站点,文学站点,健康社区、图片网站中的数据抓取分析,可以给人们更大的视野。
总体来讲写爬虫是一件让人惊喜的事,有时候还可以发现表面看不到的东西,也就是所谓的“暗网”。只要我们不用来做坏事,爬虫可以让我们的更高效,更有趣,更能开创新的内容领域。
来源: 21CTO 作者: 杜江