引言
在网络数据获取的过程中,我们常常需要从网页中提取有用的文字信息。Python 提供了强大的库来帮助我们实现这一目标。本教程将以https://theory.gmw.cn/2023 - 08/31/content_36801268.htm
为例,介绍如何使用requests
库和BeautifulSoup
库爬取网页文字并保存为txt
文件。
1. 准备工作
1.1 安装必要的库
确保你已经安装了requests
和BeautifulSoup
库。如果没有安装,可以使用以下命令进行安装:
pip install requests
pip install beautifulsoup4
1.2 导入相关库
在 Python 脚本中导入所需的库:
import requests
from bs4 import BeautifulSoup
import os
2. 获取桌面路径
不同操作系统获取桌面路径的方式略有不同。我们使用os
库来获取桌面路径,代码如下:
desktop_path = os.path.join(os.path.expanduser("~"), "Desktop")
3. 设置要爬取的网址和请求头
3.1 定义要爬取的网址
将要爬取的网页网址赋值给变量url
:
url = "https://theory.gmw.cn/2023 - 08/31/content_36801268.htm"
3.2 设置请求头
设置请求头可以模拟浏览器访问,适当降低被识别为爬虫的概率。我们将请求头信息封装在一个字典中,赋值给变量headers
:
headers = {
"User - Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}
4. 发送 HTTP 请求并获取响应
使用requests
库的get
方法发送 HTTP 请求,并获取响应对象。如果响应状态码为200
,表示请求成功,否则表示请求失败:
response = requests.get(url, headers=headers)
if response.status_code == 200:
print("请求成功")
else:
print(f"请求失败,状态码:{response.status_code}")
5. 解析 HTML 文档
如果请求成功,我们使用BeautifulSoup
库来解析 HTML 文档。将响应内容传入BeautifulSoup
的构造函数,并指定解析器为html.parser
:
soup = BeautifulSoup(response.content, 'html.parser')
6. 获取网页的所有文本内容
通过BeautifulSoup
对象的get_text
方法获取网页的所有文本内容,并将其赋值给变量text_content
:
text_content = soup.get_text()
7. 保存文本内容到 txt 文件
7.1 拼接保存文件的完整路径
将获取到的桌面路径和文件名output.txt
拼接起来,得到保存文件的完整路径:
file_path = os.path.join(desktop_path, "output.txt")
7.2 将内容写入到 txt 文件中
使用with open
语句以写入模式打开文件,并将文本内容写入文件中。注意要指定文件编码为utf - 8
,以确保正确保存中文字符:
with open(file_path, 'w', encoding='utf - 8') as file:
file.write(text_content)
print("内容已成功保存到桌面的output.txt文件中")
完整的代码如下:
import requests
from bs4 import BeautifulSoup
import os
# 获取桌面路径(不同操作系统获取方式略有不同)
desktop_path = os.path.join(os.path.expanduser("~"), "Desktop")
# 要爬取的网址
url = "https://theory.gmw.cn/2023 - 08/31/content_36801268.htm"
# 设置请求头,模拟浏览器访问,可适当降低被识别为爬虫的概率
headers = {
"User - Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}
# 发送HTTP请求
response = requests.get(url, headers=headers)
if response.status_code == 200:
# 解析HTML文档
soup = BeautifulSoup(response.content, 'html.parser')
# 获取网页的所有文本内容
text_content = soup.get_text()
# 拼接保存文件的完整路径
file_path = os.path.join(desktop_path, "output.txt")
# 将内容写入到txt文件中
with open(file_path, 'w', encoding='utf - 8') as file:
file.write(text_content)
print("内容已成功保存到桌面的output.txt文件中")
else:
print(f"请求失败,状态码:{response.status_code}")
通过以上步骤,我们就可以成功爬取网页文字并保存为txt
文件。你可以根据实际需求对代码进行修改和扩展,例如进一步处理文本内容、爬取多个网页等。在进行网络爬虫时,请遵守相关法律法规和网站的使用规则,避免过度爬取造成对网站的不良影响。