1、BeautifulSoup的安装
安装 BeautifulSoup
和 requests
库。使用 pip
安装:
pip install beautifulsoup4
pip install requests
相关文档:安装beautifulsoup4到Python3的方法(系统中默认使用的是Python2.7)
2、使用BeautifulSoup爬取网站网页示例代码
使用 requests
库来发送 HTTP 请求,并使用 BeautifulSoup
解析网页内容。
import bs4 # 导入 BeautifulSoup 模块用于解析 HTML
import requests # 导入 requests 模块用于发送 HTTP 请求
# 发送 HTTP GET 请求到维基百科页面并获取响应
response = requests.get("https://en.wikipedia.org/wiki/Mathematics")
# 检查请求是否成功(非空响应表示成功)
if response is not None:
# 解析响应内容为 HTML 格式,'html.parser' 为解析器类型
html = bs4.BeautifulSoup(response.text, 'html.parser')
# 选择页面中 id 为 'firstHeading' 的元素,通常是标题,并获取其文本
title = html.select("#firstHeading")[0].text
# 选择页面中所有的 <p> 标签,这些通常表示段落
paragraphs = html.select("p")
# 遍历所有段落并打印每个段落的文本内容
for para in paragraphs:
print(para.text)
# 提取前5个段落的文本内容并拼接成一个字符串作为介绍部分
# 使用列表推导式从 paragraphs[0:5] 中提取文本
intro = '\n'.join([para.text for para in paragraphs[0:5]])
# 打印介绍部分的文本内容
print(intro)
或
# 导入 requests 库用于发送 HTTP 请求
import requests
# 从 BeautifulSoup 库导入 BeautifulSoup 类,用于解析 HTML 文档
from bs4 import BeautifulSoup
# 发送 GET 请求到指定 URL,获取页面内容
page = requests.get('https://www.nga.gov/collection/anZ1.htm')
# 使用 BeautifulSoup 解析网页内容,'html.parser' 表示使用内置的 HTML 解析器
soup = BeautifulSoup(page.text, 'html.parser')
# 查找页面中 class 为 'AlphaNav' 的元素,这部分内容不需要,因此我们删除它
last_links = soup.find(class_='AlphaNav')
# 使用 .decompose() 方法将 'AlphaNav' 部分从 DOM 中完全移除
last_links.decompose()
# 查找 class 为 'BodyText' 的元素,这部分包含了艺术家的名称列表
artist_name_list = soup.find(class_='BodyText')
# 在 'BodyText' 元素中查找所有的 <a> 标签,返回包含艺术家链接的列表
artist_name_list_items = artist_name_list.find_all('a')
# 使用循环遍历找到的 <a> 标签,并提取其中的文本内容
# 使用 .contents[0] 获取 <a> 标签的第一个子元素,即艺术家名称
for artist_name in artist_name_list_items:
# 获取艺术家名称
names = artist_name.contents[0]
# 打印艺术家名称
print(names)