BeautifulSoup是一个用于解析HTML和XML文档的Python库,它能够通过Python的标准库或者第三方解析库(如lxml)进行解析,然后提供一种简单的访问文档元素的方式。

首先,你需要安装BeautifulSoup库和lxml库,你可以通过pip来安装:

pip install beautifulsoup4 lxml

创建BeautifulSoup对象

首先,我们需要使用BeautifulSoup类来解析HTML文档,创建一个BeautifulSoup对象。

from bs4 import BeautifulSoup

html = '<html><body><h1>Hello, BeautifulSoup!</h1></body></html>'

soup = BeautifulSoup(html, 'lxml')

在这个例子中,我们首先导入了BeautifulSoup类,然后用一个HTML字符串和解析器名称(这里是'lxml')作为参数创建了一个BeautifulSoup对象。

访问元素

我们可以使用BeautifulSoup对象来访问文档的元素。以下是一些基本的方法:

# 使用标签名访问第一个匹配的元素
h1 = soup.h1

# 使用find方法访问第一个匹配的元素
h1 = soup.find('h1')

# 使用find_all方法访问所有匹配的元素
all_h1 = soup.find_all('h1')

# 使用css选择器访问元素
h1 = soup.select('h1')

获取元素内容和属性

我们可以使用以下的方法来获取元素的内容和属性:

# 获取元素的文本内容
text = h1.get_text()

# 获取元素的属性
class_ = h1['class']

示例:从HTML中提取数据

让我们看一个更复杂的例子,从一个HTML文档中提取一些数据。

假设我们有一个HTML文档,其中包含一些新闻的标题和链接:

<html>
<body>
<div class="news">
    <h2><a href="news1.html">News 1</a></h2>
    <h2><a href="news2.html">News 2</a></h2>
    <h2><a href="news3.html">News 3</a></h2>
</div>
</body>
</html>

我们可以使用BeautifulSoup来提取所有新闻的标题和链接:

from bs4 import BeautifulSoup

html = '''
<html>
<body>
<div class="news">
    <h2><a href="news1.html">News 1</a></h2>
    <h2><a href="news2.html">News 2</a></h2>
    <h2><a href="news3.html">News 3</a></h2>
</div>
</body>
</html>
'''

soup = BeautifulSoup(html, 'lxml')

for h2 in soup.select('.news h2'):
    a = h2.a
    title = a.get_text()
    href = a['href']
    print(title, href)

以上就是BeautifulSoup库的基本使用方法。使用BeautifulSoup库,我们可以非常容易地从HTML文档中提取出我们需要的数据,是进行网络爬虫的必备技能。
推荐阅读:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

file


移动安全星球
1 声望2 粉丝