Python网络爬虫与信息提取入门<11>

我们发现没有返回任何输出,这说明a标签的前一个节点的再前一个节点是空信息。我们也可以检测一下a标签的父亲节点:

Python网络爬虫与信息提取入门<11>_第1张图片

我们发现a标签的父亲节点是p节点。

我们可以用next_siblings和previous_siblings构成了循环遍历方式来对所有的前续和后续节点做遍历处理,我们就不做相关的介绍了。

Python网络爬虫与信息提取入门<11>_第2张图片

下面我们再复习一下我们讲的HTML的遍历的相关操作,

我们在做标签树的下行遍历时,我们可以使用.contents、.children、.descendants属性,大家记住.contents返回ide是列表类型,而后两个返回的是迭代类型,我们用在for循环的语句中。

在做上行遍历时,我们可以使用.parent和.parents两个属性,其中.parent返回当前节点的父亲节点,而parents返回的是当前节点的所有先辈节点。

在做平行遍历时,我们可以用next_sibling、previous_sibling、next_siblings、previous_siblings、四个方法。其中后两个是迭代类型,只能用在for in的结构中。

掌握了对标签树的遍历,我们可以很好的从一个节点获得想要的另外一个节点信息,也是我们提取HTML信息的重要手段的途径。

Part25 3基于bs4库的HTML格式化和编码

下面介绍基于bs4库的HTML格式输出。这部分内容我们主要回答一个问题:如何让HTML页面更加友好的显示。

这里面的友好不仅是使得HTML的内容可以被人更好的阅读,也指被程序更好的读取和分析。再bs4库中提出了一个方法叫prettify。这里面我么拿我们的一个demo实例做个实验吧!

Python网络爬虫与信息提取入门<11>_第3张图片
图片发自App


首先我们用request库获得demo的HTML代码,然后我们用beautifulsoup的prettify来打印它。这里面用我们的IDLE来试试。

打开IDLE,首先我们引入beautifulsoup类然后我们开始把demo的HTML页面变成soup变量:

图片发自App

然后调用prettify函数:

Python网络爬虫与信息提取入门<11>_第4张图片
图片发自App


我们看到再原来的demo配置的信息中,它将每一个标签后面加了一个换行符\n,我们可以用print函数将相关信息打印出来:

Python网络爬虫与信息提取入门<11>_第5张图片
图片发自App

我们发现我们print之后soup的变量变得非常清晰,也就是说每一个标签以及相关内容都分行显示。

prettify这个方法,它能够为HTML文本的标签以及内容增加换行符。它也可以对每一个标签来做相关的处理。比如说我们取出soup中的a标签来做prettify的处理:

Python网络爬虫与信息提取入门<11>_第6张图片
图片发自App


我们发现a标签被清晰和漂亮的打印出来了。

prettify方法在我们实际调试bs4库中能起到很好的辅助作用,希望同学们能够掌握。

在bs4库中还有一个很重要的问题叫编码,这里面需要大家注意一点:bs4库将任何读入的HTML文件或字符串都转换成了utf8编码。我们知道utf8编码是有国际通用的标准编码格式,它能够很好的支持中文等第三国的语言。由于python3.x系列默认支持编码是utf8,因此在做相关解析的时候使用bs4库并没有什么障碍。如果还有同学使用python2解析系列的解释器,希望大家更新并使用python3系列的解释器。否则你就要在编码中做无穷无尽的转换。

这里面我们给出一个小例子:

Python网络爬虫与信息提取入门<11>_第7张图片
图片发自App


就是当我们输入中文HTML的时候,我们可以看到它的结果会非常好的显示出来仍然是中文字符。

你可能感兴趣的:(Python网络爬虫与信息提取入门<11>)