网络爬虫是一个自动提取网页的程序,它为搜索引擎从Internet网上下载网页数据,是搜索引擎的重要组成部分。映射到现实中就是: 用户打开浏览器,输入URL,打开源网页。选取想要的内容,包括标题,摘要,正文等信息,存储到硬盘中的过程。在程序技术层面上就是:网络请求,抓取结构化数据,数据存储这三步。
通用爬虫 又称全网爬虫(Scalable Web Crawler);
聚焦爬虫 (Focused Crawler);
增量式爬虫 (Incremental Web Crawler)爬行尽可能新的页面;
Deep Web 爬虫 (Deep Web,也称 Invisible Web Pages 或 Hidden Web)。
随着网络的迅速发展,大量信息的体和数量不断增加的网站,爬虫效率不足等问题。如何高效率的提取精准信息便是搜索引擎急需解决的一项棘手问题,于是爬虫策略便应用而生:
1.深度优先策略
2.宽度优先策略
3.反向链接数策略
4.Partial PageRank策略
5.OPIC策略策略
6.大站优先策略
由于互联网是实时变化的,具有很强的动态性。策略的更新也是重中之重:
1.历史参考策略
2.用户体验策略
3.聚类抽样策略
一般来说,抓取系统需要面对的是整个互联网上数以亿计的网页。单个抓取程序不可能完成这样的任务。往往需要多个抓取程序一起来处理。一般来说抓取系统往往是一个分布式的结构。
1.主从式(Master-Slave)
有一台专门的Master服务器来维护待抓取URL队列,它负责每次将URL分发到不同的Slave服务器,而Slave服务器则负责实际的网页下载工作。Master服务器除了维护待抓取URL队列以及分发URL之外,还要负责调解各个Slave服务器的负载情况。以免某些Slave服务器过于清闲或者劳累。这种模式下,Master往往容易成为系统瓶颈。
2.对等式(Peer to Peer)
所有的抓取服务器在分工上没有不同。每一台抓取服务器都可以从待抓取在URL队列中获取URL,然后对该URL的主域名的hash值H,然后计算H mod m(其中m是服务器的数量,以上图为例,m为3),计算得到的数就是处理该URL的主机编号。
robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它告诉网络蜘蛛,网站中的哪些内容是不应被网络蜘蛛获取的,哪些是可以被取的。因为一些系统中的URL是大小写敏感的,所以robots.txt的文件名应统一为小写。robots.txt应放置于网站的根目录下。如果想单独定义搜索引擎的漫游器访问子目录时的行为,那么可以将自定的设置合并到根目录下的robots.txt,或者使用robots元数据(Metadata,又称元数据)。 robots.txt协议并不是一个规范,而只是约定俗成的,所以并不能保证网站的隐私。
<meta name="robots" content="noindex,nofollow" />
Sitemap指令被很多搜索引擎支持,指定了网站Sitemaps文件的位置。Sitemaps文件包含了网站页面所在的URL的一个列表。Sitemap指令并不受User-agent指令的限制,所以它可以放在robots.txt文件中的任意位置。要注意的就是要使用网站地图指令,<sitemap_location>,并将URL的"location"值换成网站地图的地址。
例: Sitemap: <http://www.example.com/sitemap.xml>
robots.txt只防君子不防小人。通常大的搜索引擎会识别这个元数据,不索引这个页面,以及这个页面的链出页面。
评论留言