Python之 爬虫(十二)关于深度优先和广度优先

news/2024/7/19 9:17:53 标签: 爬虫, 数据结构与算法, python
  • 网站的树结构
  • 深度优先算法和实现
  • 广度优先算法和实现

网站的树结构

通过伯乐在线网站为例子:

 

 

并且我们通过访问伯乐在线也是可以发现,我们从任何一个子页面其实都是可以返回到首页,所以当我们爬取页面的数据的时候就会涉及到去重的问题,我们需要将爬过的url记录下来,我们将上图进行更改

 

 

爬虫系统中,待抓取URL队列是很重要的一部分,待抓取URL队列中的URL以什么样的顺序排队列也是一个很重要的问题,因为这涉及到先抓取哪个页面,后抓取哪个页面。而决定这些URL排列顺序的方法,叫做抓取策略。下面是常用的两种策略:深度优先、广度优先 

深度优先

深度优先是指网络爬虫会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续追踪链接,通过下图进行理解:

注:scrapy默认采用的是深度优先算法

这里是深度优先,所以这里的爬取的顺序式:
A-B-D-E-I-C-F-G-H (递归实现)

深度优先算法的实现(伪代码):

广度优先

广度优先,有人也叫宽度优先,是指将新下载网页发现的链接直接插入到待抓取URL队列的末尾,也就是指网络爬虫会先抓取起始页中的所有网页,然后在选择其中的一个连接网页,继续抓取在此网页中链接的所有网页,通过下图进行理解:

还是以这个图为例子,广度优先的爬取顺序为:
A-B-C-D-E-F-G-H-I (队列实现)

广度优先代码的实现(伪代码):

 

转载于:https://www.cnblogs.com/shuai1991/p/11072143.html


http://www.niftyadmin.cn/n/1493475.html

相关文章

[编程题]最长公共子串

对于两个字符串,请设计一个时间复杂度为O(m*n)的算法(这里的m和n为两串的长度),求出两串的最长公共子串的长度。这里的最长公共子串的定义为两个序列U1,U2,..Un和V1,V2,…Vn,其中Ui 1 Ui1,Vi 1 Vi1,同时Ui Vi。 给定两个字符…

LeetCode-3-Longest Substring Without Repeating Characters

算法描述: Given a string, find the length of the longest substring without repeating characters. Example 1: Input: "abcabcbb" Output: 3 Explanation: The answer is "abc", with the length of 3. Example 2: Input: "bbbbb&qu…

链表创建,添加,反转等

题目&#xff1a;定义一个函数&#xff0c;输入一个链表的头结点&#xff0c;反转该链表并输出反转后链表的头结点。 假设有链表A->B->C->D->E->F->G。在反转链表过程中的某一阶段&#xff0c;其链表指针指向为&#xff1a;A<-B<-C<-D E->F->…

Mysql查看进程及事务执行情况

2019独角兽企业重金招聘Python工程师标准>>> 1、查看进程 show full processlist 关键字段解读&#xff1a; 1、ID&#xff1a;进程ID 2、DB&#xff1a;属于哪个库 3、COMMAND&#xff1a;该进程的状态&#xff0c;比如Sleep、query、killed 4、TIME&#xff1a;时…

hyperopt笔记

采样 import hyperopt.pyll.stochastic print hyperopt.pyll.stochastic.sample(space)

清华大学 CocoaPods 镜像使用帮助

2019独角兽企业重金招聘Python工程师标准>>> 清华大学镜像网址 https://mirrors.tuna.tsinghua.edu.cn/ CocoaPods 镜像使用帮助 CocoaPods 是一个 Cocoa 和 Cocoa Touch 框架的依赖管理器&#xff0c;具体原理和 Homebrew 有点类似&#xff0c;都是从 GitHub 下载索…

最大子串和

Description Given a sequence a[1],a[2],a[3]……a[n], your job is to calculate the max sum of a sub-sequence. For example, given (6,-1,5,4,-7), the max sum in this sequence is 6 (-1) 5 4 14. 分析&#xff1a; 一个经典问题&#xff0c;对于一个包含负值的…

Flyme-Substratum主题

Flyme-Substratum主题 版本&#xff1a;oreo-180709 下载应用截图 历史版本 安卓O主题 Flyme-sub-oreo-180702 下载 Flyme-sub-oreo-180603 下载 安卓N主题 Flyme-sub-180716 下载 Flyme-sub-180629 下载 Flyme-sub-180430 下载 Flyme-sub-180428 下载 Flyme-sub-180425 下载 F…