Beautiful Soup可以从HTML或XML文件中提取数据,是一个解析、遍历、维护“标签树”的库。
① 安装
win10平台,以管理员身份运行cmd,执行
pip install beautifulsoup4
如果同时安装了python2和python3,分别修改python.exe名字为python2.exe和python3.exe,然后分别重新安装pip,再使用pip2或pip3即可。
② 官方文档
③ 导入库
from bs4 import BeautifulSoup
④ 选择解释器
传入一个 html 文档,soup是获得文档的对象。然后,文档被转换成 Unicode ,并且 HTML 的实例都被转换成 Unicode 编码。然后,Beautiful Soup 选择最合适的解析器来解析这段文档,如果手动指定解析器那么 Beautiful Soup 会选择指定的解析器来解析文档。
⑤ 基本元素种类
Beautiful Soup 将复杂 HTML 文档转换成一个复杂的树形结构,每个节点都是 Python 对象。
也有的认为name和attributes不作为基本元素,然后将BeautifulSoup单独列出来,表示一个文档的全部内容。
举例:
from bs4 import BeautifulSoup
html = """
<html><head><title>This is a demo </title></head>
<body>
<p class="title"><b>The demo's story.</b></p>
<p class="course">This is my blog.
<a href="http://blog.youkuaiyun.com/zhangffyy" class="py1" id="link1"><!-- Comment --></a>.</p>
</body></html>
"""
soup = BeautifulSoup(html,"html.parser")
print(soup.title) #tag标签
tag = soup.p
print(tag.name) #tag的name
print(tag.attrs) #tag的attrs
print(tag.string) #tag的内容
print(soup.a.string) #注释
输出结果:
<title>This is a demo </title>
p
{'class': ['title']}
The demo's story.
Comment
⑥ 搜索标签树
(1)find_all( name , attrs , recursive , text , **kwargs )
find_all() 方法搜索当前tag的所有tag子节点,并判断是否符合过滤器的条件。
(2)find( name , attrs , recursive , text , **kwargs )
与 find_all() 方法的区别是 find_all() 方法的返回结果是包含一个元素的列表,而 find() 方法直接返回结果。