何为Beautiful Soup
下面的话引用自官方文档:
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间。
确实,Beautiful是在爬虫应用中,解析提取Html元素的一个简单易用但高效的库。
安装 Beautiful Soup
安装的方式也有很多,可以从源码编译安装,也可以使用python的包管理器来快速安装,后者是常用的方式。
pip install beautifulsoup4
这样便可以在python中通过from bs4 import BeautifulSoup
来使用BeautifulSoup。
使用Beautiful Soup
例如有如下html:
<html>
<body>
<h1 id="title">hello world!</h1>
<a href="#" class="link">This is link1</a>
<a href="# link2" class="link">This is link2</a>
</body>
</html>
将网页读进BeautifulSoup中,
from bs4 import BeautifulSoup
html_sample =
'''
<html>
<body>
<h1 id="title">hello world!</h1>
<a href="#" class="link">This is link1</a>
<a href="# link2" class="link">This is link2</a>
</body>
</html>
'''
soup = BeautifulSoup(html_sample, 'html.parser')#html.parser是python的内置标准库用来解析html代码
1. 找出特定标签的html元素
header = soup.select('h1')
print(header)
结果如下:
[<h1 id="title">hello world!</h1>]
如果只想保留文字内容,则
print(header[0].text)
2. 找出含有特定CSS属性的元素
使用select可以找出css样式表中,所有id(id前需加#)和class(class前需加.)的元素
title = soup.select('#title')
print(title)
for link in soup.select('.link'):
print(link)
显示如下:
[<h1 id="title">hello world!</h1>]
<a class="link" href="#">This is link1</a>
<a class="link" href="# link2">This is link2</a>
3. 找出某标签的特定属性
alinks = soup.select('a')
for link in alinks:
print(link['href'])
结果如下:
#
# link2
总结
以上便是Beautiful Soup的一些简单用法,更多用法尽在官方文档,这是一个神奇的库,可以在使用时随时查看文档,记录心得。