美文网首页
Python的BeautifulSoup包

Python的BeautifulSoup包

作者: 听说昵称不能太美 | 来源:发表于2017-04-11 18:59 被阅读0次

pip install BeautifulSoup4

Beautiful Soup库是解析、遍历、维护“标签树”的功能库
<p>..</p>:标签 Tag
<p class="title">...</p> p:名称(Name) 成对出现 class="title":属性(Attributes) 0个或多个

from bs4 import BeautifulSoup
import bs4
soup=BeautifulSoup('<html>data</html>','html.parser')

Tag:标签,最基本的信息组织单元,分别用<>和</>标明开头和结尾
Name:标签的名字,<p>...</p>的名字是'p',格式:<Tag>.name
Attributes:标签的属性,字典形式组织,格式:<Tag>.attrs
NavigableString:标签内的非属性字符串,<>...</>,格式:<Tag>.string
Comment:标签内字符串的注释部分,一种特殊的Comment类型

Tag 标签

from bs4 import BeautifulSoup
soup=BeautifulSoup(demo,"html.parser")
soup.title
tag=soup.a
tag

soup.a.name
soup.a.parent.name
soup.a.parent.parent.name

tag.attrs
tag.attrs['class']
tag.atrs['href']
一个<tag>可以有0或多个属性,字典类型

soup.a
soup.a.string
NavigabeString可以跨越多个层次

newsoup.b.string

.contents:子节点的列表,将<tag>所有儿子节点存入列表
.children:子节点的迭代类型,与.contents类似,用于循环遍历儿子节点
.descendants:子孙节点的迭代类型,包含所有子孙节点,用于循环遍历
BeautifulSoup类型是标签树的根节点

for child in soup.body.children:
print(child)
for child in soup.body.descendants:
print(child)

.parent:节点的父亲标签
.parents:节点先辈标签的迭代类型,用于循环遍历先辈节点

soup=BeautifulSoup(demo,"html.parser")
for parent in soup.a.parents:
if parent is None:
print(parent)
else:
print(parent.name)

.next_sibling:返回按照HTML文本顺序的下一个平行节点标签
.previous_sibling:返回按照HTML文本顺序的上一个平行节点标签
.next_siblings:迭代类型,返回按照HTML文本顺序的后续所有平行节点标签
.previous_siblings:迭代类型,返回按照HTML文本顺序的前续所有平行节点标签

for sibling in soup.a.next_sibling:
print(sibling)
for sibling in soup.a.previous_sibling:
print(sibling)

bs4库的prettify()方法
.prettify()为HTML文本<>及其内容增加'\n'
.prettify()可用于标签,方法:<tag>.prettifi()

相关文章

网友评论

      本文标题:Python的BeautifulSoup包

      本文链接:https://www.haomeiwen.com/subject/gysuattx.html