【Data_Talks】Python学习笔记-Ch6BeautifulSoup库使用

Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:

Tag

NavigableString

BeautifulSoup

Comment

可以通过type(soup.元素)来判断对象类型

下面以豆瓣读书为例,进行实例说明(https://book.douban.com/)。1.首先通过request获取首页HTML文档,如下:

【Data_Talks】Python学习笔记-Ch6BeautifulSoup库使用_第1张图片

然后我们来看看通过beautifulsoup转换后的树状文档:

1. Tag:下面的

【Data_Talks】Python学习笔记-Ch6BeautifulSoup库使用_第2张图片

1.1获取标签语句soup.标签名:即可以查找出该标签的完整文档,若存在多个相同标签名,则返回第一个标签。

【Data_Talks】Python学习笔记-Ch6BeautifulSoup库使用_第3张图片

1.2获取元素类型

下面为了验证我们的判断,即<>标识标签部分的起始,我们用type()来验证下各元素的类型。

【Data_Talks】Python学习笔记-Ch6BeautifulSoup库使用_第4张图片

接下来我们看看标签由哪些属性组成:name(名字)+attrs:

1.3获取标签名和标签属性

直观判断:紧靠<符号部分的字符串组即为标签的名,而空格后的字符串即为标签的属性。

可以分别通过soup.标签.namesoup.标签.attrs来加以验证和判断。属性与名称通常为多对1关系,即1个标签名对应多个属性,通过soup.标签.attrs可以获取所有属性并返回字典

选择某个特定属性soup.标签.attrs['']或者soup.标签['']

【Data_Talks】Python学习笔记-Ch6BeautifulSoup库使用_第5张图片
【Data_Talks】Python学习笔记-Ch6BeautifulSoup库使用_第6张图片

2. NavigableString

既然我们已经得到了标签的内容,那么问题来了,我们要想获取标签内部的文字怎么办呢?很简单,用 .string 即可.这部分是独立于标签名称标签属性之外的标签文字内容

【Data_Talks】Python学习笔记-Ch6BeautifulSoup库使用_第7张图片

3. beautifulsoup

4. comment

II.遍历树状文档

contents和children两种方法

contents返回一个子节点列表(可以直接打印)

children返回一个子节点迭代(不能直接打印,需要通过for xx in yy的语句获取内容)

【Data_Talks】Python学习笔记-Ch6BeautifulSoup库使用_第8张图片

你可能感兴趣的:(【Data_Talks】Python学习笔记-Ch6BeautifulSoup库使用)