BeautifulSoup是一款强大的HTML等文档解析工具,能够快速解析HTML标签和内容.以下是BeautifulSoup常见的一些用法:
# 演示数据
html = '''
<html><head><title>This is HTML title</title></head>
<body>This is HTML body!<p>This is p tag content</p>
<p>p1<a>p2</a><p>p3<span>span in p3</span></p>p3</p>
<body>
'''
from bs4 import BeautifulSoup
soup = BeautifulSoup(html,'lxml')
# 美化HTML代码
# print(soup.prettify())
# 获取标题
print(soup.title.string)
# 获取第一个p标签文本
print(soup.p.string)
# 嵌套选择节点
print(soup.head.title)
print('*' * 50)
# 重新赋值进行测试
html = '''
<html><head><title>This is HTML title</title></head>
<body>This is HTML body!<p>p1<a id='a1'>p2</a><a class='a3'>p3<span>span in p3</span></a>p4</p>
<body>
'''
soup = BeautifulSoup(html,'lxml')
# 获取第一个p的直接子节点
print(soup.p.children)
for i,child in enumerate(soup.p.children):
pass
# print(i,child)
print('*' * 50)
# 获取第一个p的所有子孙节点
print(soup.p.descendants)
for i,child in enumerate(soup.p.descendants):
pass
# print(i,child)
print('*' * 50)
# 获取第一个p的父节点
# print(soup.p.parent)
# 获取第一个p的祖先节点
# print(soup.p.parents)
print('*' * 50)
# 标准选择器 find_all(name,attr,recursive,text,**kwargs) 可根据标签名,属性,内容查找文档
# 查找所有a标签
print(soup.find_all('a'))
# 查找指定下标的a元素
print(soup.find_all('a')[0])
# 查找a元素下的span子元素
a = soup.find_all('a')[1]
print(a.find_all('span'))
# 根据属性查找
print(soup.find_all(attrs={'id':'a1'}))
# 查找class属性,限制查找1条
print(soup.find_all(class_='a3',limit=1))
print('*' * 50)
# 通过select()传入CSS选择器查找
print(soup.select('p'))
print(soup.select('#a1'))
print(soup.select('.a3 span'))
# 获取元素文本内容
print(soup.select('a')[1].get_text())