[Python/第三方库/网络爬虫] Beautifulsoup4库:解析HTML/XML文档

1 概述:Beautifulsoup库

  • BeautifulSoup是一个Python库,用于从HTML或XML文档中提取数据。它提供了一种简单的方式来遍历解析HTML/XML树,并提供了许多有用的方法来搜索、修改和操作文档。

  • 在解析HTML中的JSON数据时,可以使用BeautifulSoup的find()或find_all()方法来查找包含JSON数据的标签。然后,可以使用Python的json库将JSON数据解析为Python对象。

  • BeautifulSoup4 vs lxml

  • lxml 只会局部遍历
  • Beautiful Soup 是基于HTML DOM的,会载入整个文档,解析整个DOM树,因此时间和内存开销都会大很多,所以性能要低于lxml

2 案例实践

CASE 使用BeautifulSoup从HTML中解析出JSON数据

from bs4 import BeautifulSoup
import json

# 假设html是包含JSON数据的HTML字符串
html = """
<html>
<body>
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Person",
  "name": "John Doe",
  "jobTitle": "Software Engineer",
  "email": "johndoe@example.com"
}
</script>
</body>
</html>
"""

# 创建BeautifulSoup对象
soup = BeautifulSoup(html, 'html.parser')

# 查找包含JSON数据的标签
script_tag = soup.find('script', {'type': 'application/ld+json'})

# 提取JSON数据
json_data = json.loads(script_tag.string)

# 打印解析后的JSON数据
print(json_data)
  • output
{
  "@context": "https://schema.org",
  "@type": "Person",
  "name": "John Doe",
  "jobTitle": "Software Engineer",
  "email": "johndoe@example.com"
}
  • 在这个例子中,我们假设HTML中包含一个<script>标签,其type属性为application/ld+json,并且包含了一个JSON对象。

我们使用BeautifulSoupfind()方法找到这个标签,然后使用json库的loads()方法将其字符串解析为Python对象

  • BeautifulSoup的优势在于:它提供了灵活而强大的方法来解析和操作HTML/XML文档。它支持CSS选择器正则表达式多种查找方式,使得解析和提取数据变得简单而高效。
  • 在云计算领域中,解析HTML中的JSON数据可以用于从网页中提取结构化数据,例如爬取网页上的商品信息、新闻标题等。这些数据可以用于数据分析、机器学习等应用。

Y 推荐文献

X 参考文献

posted @ 2025-02-06 02:14  千千寰宇  阅读(4)  评论(0)    收藏  举报