Python的BeautifulSoup教学
1. BeautifulSoup概述
1.1 BeautifulSoup介绍
1.1.1 BeautifulSoup简介
- BeautifulSoup是一个用于解析HTML和XML文档的Python库。
- 它能够帮助开发者快速地提取文档中的有用信息。
- 提供了简单直观的API,易于学习和使用。
1.1.2 BeautifulSoup的优势
- 支持多种解析器,如lxml、html.parser等。
- 具有较高的扩展性,可以通过编写解析规则来提取文档中的特定信息。
- 易于与其他Python库集成,如requests、pandas等。
1.2 BeautifulSoup的基本用法
1.2.1 安装BeautifulSoup
- 可以通过pip安装BeautifulSoup:
pip install beautifulsoup4。 - 同时需要安装相应的解析器,如lxml、html.parser等。
1.2.2 创建BeautifulSoup对象
- 需要提供HTML或XML文档以及相应的解析器。
- 示例代码:
soup = BeautifulSoup(html_doc, 'lxml')。
1.2.3 查找元素
- 使用
find()和find_all()方法查找文档中的元素。 - 可以通过属性、标签名、属性值等进行筛选。
1.2.4 提取数据
- 可以使用
.text属性提取元素的文本内容。 - 可以通过
get()方法获取元素的属性值。
1.3 BeautifulSoup的高级用法
1.3.1 CSS选择器
- BeautifulSoup支持CSS选择器,可以通过CSS选择器来查找元素。
- 示例代码:
soup.select('div.class')。
1.3.2 XPath表达式
- BeautifulSoup支持XPath表达式,可以通过XPath表达式来查找元素。
- 示例代码:
soup.xpath('//div[@class="class"]')。
1.3.3 解析嵌套结构
- BeautifulSoup可以解析嵌套的HTML结构,如列表、表格等。
- 可以通过递归的方式提取嵌套结构中的数据。
1.4 BeautifulSoup的实战应用
1.4.1 爬虫入门
- 使用BeautifulSoup进行简单的网页爬取,提取所需信息。
- 示例代码:
response = requests.get(url)soup = BeautifulSoup(response.text, 'lxml')print(soup.find('div', class_='class').text)
1.4.2 数据清洗
- 使用BeautifulSoup进行数据清洗,去除无用的标签和空格等。
- 示例代码:
data = soup.find('div', class_='class').text.strip()
1.4.3 数据存储
- 将提取的数据存储到文件中,如CSV、JSON等。
- 示例代码:
with open('data.csv', 'w', encoding='utf-8') as f:writer = csv.writer(f)writer.writerow(['name', 'age'])for row in data:writer.writerow(row)
2. Python的requests库
2.1 requests库介绍
2.1.1 requests库简介
- requests是一个用于发送HTTP请求的Python库。
- 提供了简单易用的API,可以轻松地发送GET、POST等请求。
- 支持多种协议,如HTTP、HTTPS等。
2.1.2 requests库的优势
- 支持自动处理响应头和编码。
- 支持多种认证方式,如Basic认证、OAuth认证等。
- 支持连接池,提高了网络请求的效率。
2.2 requests库的基本用法
2.2.1 安装requests
- 可以通过pip安装requests:
pip install requests。
2.2.2 发送GET请求
- 示例代码:
response = requests.get(url)print(response.text)
2.2.3 发送POST请求
- 示例代码:
response = requests.post(url, data=data)print(response.text)
2.2.4 发送请求头和参数
- 可以通过
headers参数设置请求头。 - 可以通过
params参数设置请求参数。
2.3 requests库的高级用法
2.3.1 处理响应头和编码
- 可以通过
headers参数获取响应头。 - 可以通过
text属性获取响应文本。
2.3.2 处理Cookies
- 可以通过
cookies参数设置和获取Cookies。 - 示例代码:
response = requests.get(url, cookies=cookies)print(response.cookies)
2.3.3 异常处理
- 可以通过try-except语句处理请求过程中的异常。
- 示例代码:
try:response = requests.get(url)except requests.exceptions.RequestException as e:print(e)
2.4 requests库的实战应用
2.4.1 登录认证
- 使用requests库进行登录认证,获取认证后的Cookies。
- 示例代码:
response = requests.post(login_url, data=data)print(response.cookies)
2.4.2 爬虫实战
- 使用requests和BeautifulSoup进行网页爬取,提取所需信息。
- 示例代码:
response = requests.get(url)soup = BeautifulSoup(response.text, 'lxml')print(soup.find('div', class_='class').text)
2.4.3 数据接口调用
- 使用requests库调用数据接口,获取所需数据。
- 示例代码:
response = requests.get(api_url)data = response.json()print(data)




