爬虫实战9—基于page rank的顺序调整
文章说明:本文是在学习一个网络爬虫课程时所做笔记,文章如有不对的地方,欢迎指出,积极讨论。
一、Page Rank
PageRank算法计算每一个网页的PageRank值,然后根据这个值的大小对网页的重要性进行排序。
对海量的节点进行排序。排序策略算法。
Google的两大神器:(1)Page Rank ;(2)Big Table。
用于爬虫的两点:
(1)优先抓谁;
(2)数据爬取回来以后,查询时优先显示谁。
(一)基本思想
1.数量假设:在web图模型中,如果一个页面节点接收到的其他网页指向其他网页指向的入链数量越多,那么这个页面越重要;
2.质量假设:指向页面A的入链质量不同,质量高的页面会通过链接向其他页面传递更多的权重。所以越是质量高的页面指向页面A,则页面A越重要。
(二)简单推导
(三)迭代计算PR
用矩阵计算
(四)Page Rank算法的优缺点
优点:一个与查询无关的静态算法,所有网页的PageRank值通过离线计算获得;有效减少在线查询时的计算量,极大降低了查询响应时间。
缺点:人们的查询具有主题特征,PageRank忽略了主题相关性,导致结果的相关性和主体性降低;旧的页面等级会比新页面高。
考虑别的因子影响它。可以用机器学习的方式来确定每个值的权重,比如PageRank、点赞数、评论数等都可以作为其中的值。
(四)python的PageRank—NetworkX
pip install networkx
二、动态排序过程
(一)数据库架构
改造数据库,在表中加入PR值,进行排序。对PR值创建索引,从大到小取。
(二)流程
1.主从服务器始终维持心跳
2.根据重拍条件(queue的size、定时等),启动重拍流程
3.通知爬虫,暂停爬取
4.爬虫在心跳回复中收到暂停通知,暂停爬取并通知主机
5.主机等待所有爬虫暂停
6.主机开始重排网页
7.重排结束,设置标志位
8.心跳回复收到恢复指令,继续爬取
主要通信协议:
1.注册
2.暂停、恢复爬取
3.终止爬虫程序
4.错误通知
5.状态同步