活动地址:CSDN21天学习挑战赛
目录
1,BeautifulSoup4库
1.1介绍
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间.官方最新版已经更新到4.4版本了
1.2安装模块
cmd窗口执行一下命令 pip install beautifulsoup4 ,运行之后出现下记内容表示该模块安装成功。
1.3项目中导入
form bs4 import BeautifulSoup #导入BeautifulSoup包
1.4安装解析库
Beautiful Soup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,其中一个是 lxml .根据操作系统不同,可以选择下列方法来安装lxml:
$ apt-get install Python-lxml
$ easy_install lxml
$ pip install lxml
另一个可供选择的解析器是纯Python实现的 html5lib , html5lib的解析方式与浏览器相同,可以选择下列方法来安装html5lib:
$ apt-get install Python-html5lib
$ easy_install html5lib
$ pip install html5lib
下表列出了主要的解析器,以及它们的优缺点:
解析器 | 使用方法 | 优势 | 劣势 |
---|---|---|---|
Python标准库 | BeautifulSoup(markup, "html.parser") |
|
|
lxml HTML 解析器 | BeautifulSoup(markup, "lxml") |
|
|
lxml XML 解析器 |
|
|
|
html5lib | BeautifulSoup(markup, "html5lib") |
|
|
1.5实操
读取html
from bs4 import BeautifulSoup
html = '''
<div class="panel">
<div class="panel-heading">
<h4>Hello</h4>
</div>
<div class="panel_body">
<ul class="list" id="list-1" name="element">
<li class="element">Foo</li>
<li class="element">Bar</li>
<li class="element">Jay</li>
</ul>
<ul class="list list-small" id="list-2">
<li class="element">Foo</li>
<a href="https://www.baidu.com">百度官网</a>
<li class="element">Bar</li>
</ul>
</div>
</div>
'''
# 创建对象
soup = BeautifulSoup(html, 'lxml')
读取html文件
from bs4 import BeautifulSoup
soup = BeautifulSoup(open('index.html'),'lxml')
基本操作
from bs4 import BeautifulSoup
html = '''
<div class="panel">
<div class="panel-heading">
<h4>Hello</h4>
</div>
<div class="panel_body">
<ul class="list" id="list-1" name="element">
<li class="element">Foo</li>
<li class="element">Bar</li>
<li class="element">Jay</li>
</ul>
<ul class="list list-small" id="list-2">
<li class="element">Foo</li>
<a href="https://www.baidu.com">百度官网</a>
<li class="element">Bar</li>
</ul>
</div>
</div>
'''
# 创建对象
soup = BeautifulSoup(html, 'lxml')
# 缩进格式
print(soup.prettify())
# 获取title标签的所有内容
print(soup.title)
# 获取title标签的名称
print(soup.title.name)
# 获取title标签的文本内容
print(soup.title.string)
# 获取head标签的所有内容
print(soup.head)
# 获取第一个div标签中的所有内容
print(soup.div)
# 获取第一个div标签的id的值
print(soup.div["id"])
# 获取第一个a标签中的所有内容
print(soup.a)
# 获取所有的a标签中的所有内容
print(soup.find_all("a"))
# 获取id="u1"
print(soup.find(id="u1"))
# 获取所有的a标签,并遍历打印a标签中的href的值
for item in soup.find_all("a"):
print(item.get("href"))
# 获取所有的a标签,并遍历打印a标签的文本值
for item in soup.find_all("a"):
print(item.get_text())