Python网络爬虫与信息抽取笔记08 标签树的遍历

【导读】我们在上一节的内容中已经为大家对Beautiful Soup库进行讨论,这一节将学习标签树的遍历。本文内容讨论了标签树遍历的四个内容:HTML基本格式、下行遍历、上行遍历以及平行遍历。话不多说,让我们一起学习这些内容吧。

春节充电系列:李宏毅2017机器学习课程学习全部笔记

Python网络爬虫与信息抽取笔记01 课程框架和Python IDE工具

Python网络爬虫与信息抽取笔记02 requests库入门

Python网络爬虫与信息抽取笔记03 HTTP协议介绍

Python网络爬虫与信息抽取笔记04 Robots协议

Python网络爬虫与信息抽取笔记05 爬虫实战1

Python网络爬虫与信息抽取笔记06 爬虫实战2

Python网络爬虫与信息抽取笔记07 Beautiful Soup库

视频网址:

https://www.bilibili.com/video/av9784617?from=search&seid=240663710546169136

http://www.icourse163.org/course/BIT-1001870001?tid=1001962001

Python网络爬虫与信息抽取笔记08 标签树的遍历

今天介绍bs4库的具体应用



1.HTML基本格式



HTML基本格式如下图所示

我们可以根据HTML格式制作一个标签树

我们有三种方法遍历,分别是下行遍历、上行遍历以及平行遍历。

2.下行遍历



标签树的下行遍历有三个属性,第一个属性.contents是一个列表,将所有儿子存入其中,这是最常用的一个。另外两个属性.children和.descendants分别是迭代类型。

例如我们用soup.head.contents就可以得到标签<head>的子标签

对于一个标签的儿子节点并不只包括标签节点还包括字符串节点

注意.contents返回形式是列表,可以用列表的方式对其中的信息进行检索

我们可以用下图的for循环分别遍历儿子节点或者子孙节点(第二个for循环打印错误,应为soup.body.descendants)

3.上行遍历



对于标签树的上行遍历有两个属性,其中第二个属性.parents为迭代类型

以下指令我们可以发现html的父亲是它自己,soup没有父亲

我们可以用for循环进行标签树的上行遍历

4.平行遍历



标签树的平行遍历则有四个属性

标签树的平行遍历是有条件的

下面是一个具体的例子,平行遍历必须在同一个父节点下的各节点间

通过soup.a.next_sibling指令我们可以知道A标签的下一个平行节点是一个字符串and

soup.a.previous_sibling可以得到上一个平行节点标签

我们可以用下面两个for循环分别遍历后续节点和前续节点

我们总结一下上述所讲的东西,可以全部属性都如下图所示

参考链接:

http://www.icourse163.org/course/BIT-1001870001?tid=1001962001

更多教程资料请访问:人工智能知识资料全集

-END-

原文发布于微信公众号 - 专知(Quan_Zhuanzhi)

原文发表时间:2018-05-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Petrichor的专栏

LaTeX 速查表

4002
来自专栏翻译

路径查找器AI

问题源于我想建立一个游戏AI,它要能够定义一条从起点到终点的路径,同时避开路上的墙壁障碍物。为此,我写了一个C#库(path.dll),它允许定义一个二维空间(...

2317
来自专栏深度学习那些事儿

pytorch中retain_graph参数的作用

在pytorch神经网络迁移的官方教程中有这样一个损失层函数(具体看这里提供0.3.0版中文链接:https://oldpan.me/archives/pyto...

7274
来自专栏机器学习原理

深度学习(1)——tensorflow简介什么是TensorFlow?什么是数据流图?安装基本概念示例变量的更新操作

3803
来自专栏用户2442861的专栏

Qt 学习之路 2(45):模型

http://www.devbean.net/2013/02/qt-study-road-2-model/

982
来自专栏ChaMd5安全团队

小姐姐教你做CTF逆向题:利用符号执行技术和约束求解器

0x00 前言 在CTF比赛中,逆向类题目常常以考察选手的逆向分析能力、算法分析能力角度出发,通过还原程序中的算法逻辑,从而获取flag。但是如果可以在程序执行...

97712
来自专栏我有一个梦想

Python 项目实践二(下载数据)第三篇

接着上节继续学习,在本章中,你将从网上下载数据,并对这些数据进行可视化。网上的数据多得难以置信,且大多未经过仔细检查。如果能够对这些数据进行分析,你就能发现别人...

2855
来自专栏落影的专栏

程序员进阶之算法练习(十四)

前言 坚持做算法练习对开发的好处是抽象能力变强,拿到一个需求能很快对其进行抽象,然后再用学过的设计模式相关知识进行整理,最后用代码实现。 最大的好处在于:对...

3507
来自专栏Python爬虫与数据挖掘

浅谈网络爬虫中深度优先算法和简单代码实现

我们今天要学习的内容,主要是给大家普及一下深度优先算法的基本概念,详情内容如下。

521
来自专栏QQ音乐技术团队的专栏

​关于 M4A 文件的随机访问

文章介绍了 M4A 文件的大概结构,详细解读了其中的 Sample Table Box,并结合图例,详细讲解了如何使用它来完成 M4A 文件的随机访问。

4310

扫码关注云+社区

领取腾讯云代金券