詹惠儿

2018-11-29   阅读量: 769

数据分析师 Python编程 Python数据分析 Python爬虫

分发爬虫是什么?

扫码加入数据分析学习群

爬虫中的线程可以在不同的进程下运行,每个进程都在分布式爬网系统的不同节点上运行。这种分配对于扩展至关重要;它也可以在地理上分布的爬虫系统中使用,其中每个节点爬行主机“靠近”它。在爬网程序节点之间对正在爬网的主机进行分区可以通过散列函数或一些更具体定制的策略来完成。例如,我们可能会在欧洲找到一个抓取节点,专注于欧洲域,尽管由于多种原因这是不可靠的 - 数据包通过互联网的路径并不总是反映地理邻近性,并且无论如何都是主机的域并不总是反映其实际位置。

分布式爬网程序的各个节点如何通信和共享URL?我们的想法是 在每个节点上复制之前的流程,但有一个本质区别:在URL过滤器之后,我们使用主机拆分器将每个幸存的URL分派给负责URL的爬虫节点; 因此,被爬网的主机集在节点之间进行分区。主机拆分器的输出进入分布式系统中每个其他节点的Duplicate URL Eliminator块。

然而, 模块由于以下几个因素而变得复杂:

  1. 与URL前沿和重复消除模块不同,无法基于主机名对文档指纹/带状疱疹进行分区。没有什么能阻止相同(或高度相似)的内容出现在不同的Web服务器上。因此,指纹/带状疱疹的集合必须基于指纹/木瓦的某些属性(例如,通过使指纹模数为节点的数量)在节点之间划分。这种局部性不匹配的结果是大多数“内容被发现?”测试导致远程过程调用(尽管可以批量查找请求)。
  2. 文档指纹/带状疱疹流中的局部性很小。因此,缓存流行的指纹并没有帮助(因为没有流行的指纹)。
  3. 文档随着时间的推移而变化,因此,在连续爬行的情况下,我们必须能够从内容看到的集合中删除过时的指纹/带状疱疹。为此,有必要将文档的指纹/单元格与URL本身一起保存在URL边界中。

添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
0.0000 0 4 关注作者 收藏

评论(0)


暂无数据

推荐课程

推荐帖子