之前不太去关注这些概念,自从做爬虫相关的实践之后,觉得有必要去了解下这两个概念的差别。
1.URI和URL
URI是个纯粹的句法结构,用于指定标识Web资源的字符串的各个不同部分。URL是一种具体的URI,它不仅唯一标识资源,而且还提供了定位该资源的足够信息。URL主要用在各种www客户程序和服务器程序上。
2.http状态码
200:请求成功
202:请求被接受,但处理尚未完成。
300:该状态码不被http/1.0的应用程序直接使用,只是作为3xx类型回应的默认解释。存在多个可用的请求资源。
301:请求到的资源会分配一个永久的URL,这样就可以在将来通过该URL来访问此资源。
302:请求道的资源在一个不同的URL处临时保存。
400:非法请求
401:未授权
403: 禁止
404:没有找到
5xx:服务器错误
3.宽度优先爬虫算法
从一个种子URL开始,
1)把解析出的链接和visited表中的链接进行比较,若visited表中不存在此链接,表示其未被访问过。
2)把链接放入todo表中。
3)处理完毕后,再次从todo表中取得一条链接,直接放入visited表中。
4)针对这个链接所表示的网页,继续上述过程,如此循环,知道没有todo表为空为止。
4.带偏好的爬虫算法
页面选择策略
网页的重要性和链接的受欢迎度和链接的重要度和平均链接深度,网站质量,历史权重等有关。
a.链接的受欢迎度由反向链接(指向当前URL的链接)的数量和质量决定,定义为IB(P)。
b.链接的重要性由URL字符串本身决定,比如认为.com比.cc重要性高,定义为IL(P)。
平均链接深度:根据宽度优先的原则计算出全站的平均链接深度,然后认为距离种子站点越近的重要性越高。定义为:ID(P)。
网页的重要性公式I(P)=X*IB(P)+Y*IL(P)。
带偏好的爬虫算法是基于宽度优先队列扩展得来的,用优先级队列来实现todo表。