BeautifulSoup学习 之结构

Posted 御剑之道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BeautifulSoup学习 之结构相关的知识,希望对你有一定的参考价值。

 

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

  1.     Tag
  2.     NavigableString
  3.     BeautifulSoup
  4.     Comment

()1)、Tag

  就是html中的标签,如图所示

代码:

html
\'<title>The Dormouse\\\'s story</title> <a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>\'
>>> soup=BeautifulSoup(html,"html.parser")
>>> soup.title
<title>The Dormouse\'s story</title>
>>> soup.name
\'[document]\'
>>> soup.head
>>> soup.a
<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>
>>> type(soup.title)
<class \'bs4.element.Tag\'>
>>> type(soup.a)
<class \'bs4.element.Tag\'>
>>> soup.a.name
\'a\'
>>> soup.a.attrs
{\'href\': \'http://example.com/elsie\', \'id\': \'link1\', \'class\': [\'sister\']}
>>> soup.a.attrs[\'class\']
[\'sister\']
>>> soup.a.text
\'Elsie\'

 

(2)NavigableString

要想获取标签内部的文字怎么办呢

很简单,用 .string 即可,例如

>>> soup.a.string
\'Elsie\'
>>>type(soup.a)
<class \'bs4.element.Tag\'>
>>> type(soup.a.name)
<class \'str\'>
>>> type(soup.a.text)
<class \'str\'>
>>> type(soup.a.string)
<class \'bs4.element.NavigableString\'>

可以看出来,soup.a.sting获取到的是一个NavigableString类型

(3)BeautifulSoup

BeautifulSoup 对象表示的是一个文档的全部内容.大部分时候,可以把它当作 Tag 对象,是一个特殊的 Tag,我们可以分别获取它的类型,名称,以及属性来感受一下

>>> soup.name
\'[document]\'
>>> type(soup)
<class \'bs4.BeautifulSoup\'>

 

(4)Comment

Comment 对象是一个特殊类型的 NavigableString 对象,其实输出的内容仍然不包括注释符号,

>>> html="""<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>"""
>>> soup=BeautifulSoup(html,"html.parser")
>>> soup.a
<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>
>>> soup.a.string
\' Elsie \'
>>> soup.a.text
\'\'

 

以上是关于BeautifulSoup学习 之结构的主要内容,如果未能解决你的问题,请参考以下文章

如果标签存在,beautifulsoup 从片段中获取最后一个标签

Python 之BeautifulSoup4解析模块

python爬虫之beautifulsoup的使用

爬虫笔记3

爬虫之Beautifulsoup及xpath

Python3 爬虫 -- BeautifulSoup之再次爬取CSDN博文