Beautiful Soup的使用

发布于:2024-06-27 ⋅ 阅读:(143) ⋅ 点赞:(0)

1、Beautiful Soup简介

        Beautiful Soup是一个Python的一个HTML或XML的解析库,我们用它可以方便地从网页中提取数据。

        Beautiful Soup 提供一些简单的、Python 式的函数来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以无须很多代码就可以写出一个完整的应用程序。 Beautifùl Soup 自动将输人文档转换为 Unicode 编码,将输出文档转换为 utf-8 编码。你不需要考虑编码方式,除非文档没有指定具体的编码方式,这时你仅仅需要说明一下原始编码方式就可以了。 Beautiful Soup 已成为和 Ixml、html5lib 一样出色的 Python 解释器,为用户灵活提供不同的解析策略或强劲的速度。

2、基本使用

1、导入库

from bs4 import BeautifulSoup  
import requests

2、发送请求并获取HTML

url = 'https://XXXXXXXX.com'  # 替换为你想要爬取的网页的 URL  
response = requests.get(url)  
response.raise_for_status()  # 如果请求失败,则抛出异常  
html_content = response.text

3、解析HTML

soup = BeautifulSoup(html_content, 'lxml')  # 使用 lxml 解析器解析 HTML

4、查找标签

  • 使用 .find() 或 .find_all() 方法查找标签。

  • 使用 CSS 选择器或标签名作为参数。

# 使用标签名查找  
p_tags = soup.find_all('p')  
  
# 使用 CSS 选择器查找  
div_with_class = soup.find('div', class_='some-class')  # 注意:class 属性在 Python 中是关键字,所以使用 class_ 代替

5、获得标签内容

  • 使用 .string 属性获取单个标签的文本内容(仅当标签内只有一个文本节点时有效)。

  • 使用 .get_text() 方法获取标签及其所有子标签的文本内容。

# 获取单个标签的文本内容  
content = div_with_class.string  
  
# 获取标签及其所有子标签的文本内容  
all_text = p_tags[0].get_text()

6、获得标签属性

  • 使用 ['attribute_name'] 或 .get('attribute_name') 获取标签的属性值。

# 获取链接的 href 属性  
href = soup.find('a')['href']  # 注意:如果找不到标签或标签没有该属性,则会抛出 KeyError 异常  
  
# 更安全的方式是使用 .get() 方法,它会在找不到属性时返回 None  
href = soup.find('a').get('href')

7、遍历标签

  • 使用 for 循环遍历 .find_all() 返回的标签列表。

for p in soup.find_all('p'):  
    print(p.get_text())


网站公告

今日签到

点亮在社区的每一天
去签到