网络爬虫有两个任务:下载页面和发现URL。
1.从请求队列中取出URL,下载对应页面,解析页面,找到链接标签。
2.网络爬虫发现了没有遇到过的URL,将其加入请求队列。
网络爬虫使用礼貌策略(politeness policy):
网络爬虫不会在特定的网络服务器上一次抓取多个页面,在同一个网络服务器的两次请求之间,网络爬虫会等待一定时间。
管理员可以在网络服务器上保存robots.txt文件,来辅助或者限制搜索引擎抓取页面:
User-agent:标识一个网络爬虫或者一组网络爬虫,受到以下规则约束。
Allow及Disallow:规定哪些资源允许或者不允许user-agent爬取。
第二个命令块指出:允许FavoredCrawler爬取该网站的所有资源。
sitemap:
网站地图中包含URL列表及与相应URL相关的数据,如修改时间、修改频率、重要程度等。网站地图可以告诉搜索引擎管理员希望被索引的数据,网站隐藏的内容(通过表单生成的页面),网络地图还可以使爬虫知道页面的修改时间等。
robots.txt:包含sitemap的引用
sitemap: 告诉搜索引擎该url的“最后修改时间”,“更新频率”,“重要程度”(0.7>0.5)
HTTP有一个特殊的HEAD请求,用于检测网页变化:
Head请求只返回页面的头部信息,不是页面内容。 服务器的响应中包含Last-Modified,指出页面内容最后一次发生变化的时间。网络爬虫对上一次从GET请求接收到的日期和Head请求中得到的Last-Modified的值比较。
HTTP HEAD请求和服务器响应:
网页重复检测:
simhash 指纹计算过程:
1.利用具有权值的特征集合表示文档,例如词组及频率。
2.对每个词生成B位的不同的散列值。
B = 8
3.在B维的向量V中,对每维进行计算:如果词相应位的散列值为1,对特征权值进行加法运算,否则减法运算。
3=-2+1-1-1+1+2-1+1+1+1+1+1-1
4.如果向量V的第i维是正数,将B位的指纹中第i位设为1,否则为0,最终生成B位的指纹。
3>0 , then 1
simhash指纹生成过程:
作者:gls_liujia 发表于2013-7-31 20:50:55
原文链接