Python 爬取网页文字并保存为 txt 文件教程

news/2024/12/23 14:22:45/

引言

在网络数据获取的过程中,我们常常需要从网页中提取有用的文字信息。Python 提供了强大的库来帮助我们实现这一目标。本教程将以https://theory.gmw.cn/2023 - 08/31/content_36801268.htm为例,介绍如何使用requests库和BeautifulSoup库爬取网页文字并保存为txt文件。

1. 准备工作

1.1 安装必要的库

确保你已经安装了requestsBeautifulSoup库。如果没有安装,可以使用以下命令进行安装:

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文件。你可以根据实际需求对代码进行修改和扩展,例如进一步处理文本内容、爬取多个网页等。在进行网络爬虫时,请遵守相关法律法规和网站的使用规则,避免过度爬取造成对网站的不良影响。


http://www.ppmy.cn/news/1557484.html

相关文章

MFC/C++学习系列之简单记录11——树控件的使用

MFC/C学习系列之简单记录11——树控件的使用 前言CTreectrl使用界面设置代码使用简单设计其他使用注意! 总结 前言 在之前的界面设计中使用得很少,但是可以学习一下,以备不时之需! CTreectrl使用 界面设置 在工具箱中选择Tree C…

如果模块请求http改为了https,测试方案应该如何制定,修改

作者:逍遥Sean 简介:一个主修Java的Web网站\游戏服务器后端开发者 主页:https://blog.csdn.net/Ureliable 觉得博主文章不错的话,可以三连支持一下~ 如有疑问和建议,请私信或评论留言! 前言 将模块的请求协…

使用 AI 辅助开发一个开源 IP 信息查询工具:一

本文将分享如何借助当下流行的 AI 工具,一步步完成一个开源项目的开发。 写在前面 在写代码时,总是会遇到一些有趣的机缘巧合。前几天,我在翻看自己之前的开源项目时,又看到了 DDNS 相关的讨论。虽然在 2021 年我写过两篇相对详细的教程&am…

深度学习常见名词概念:Sota、Benchmark、Baseline、端到端模型、迁移学习等的定义

Sota Sota实际上就是State of the arts 的缩写,指的是在某一个领域做的Performance最好的model,一般就是指在一些benchmark的数据集上跑分非常高的那些模型。 **SOTA model:**并不是特指某个具体的模型,而是指在该项研究任务中&…

Spring Cloud Sleuth 分布式链路追踪

介绍分布式链路的思想 一、基本概念 1、Span:Span是链路追踪中的基本工作单元。当一个远程调度任务(如RPC调用)发生时,会产生一个Span。Span通过一个64位ID进行唯一标识,并且包含其他数据信息,如摘要、时间…

静态变量(static)

静态变量(static) 静态全局变量静态局部变量静态成员变量C++ 中,static 关键字可用于不同类型的变量:静态全局变量、静态局部变量和静态成员变量多线程下,静态全局变量、静态局部变量和静态成员变量无论初始化是否安全,访问和修改变量时都需要使用互斥锁或其他同步机制保…

macOS 显示或不显示隐藏文件

在 macOS 中,可以通过以下方法设置是否显示隐藏文件: 使用快捷键临时切换显示隐藏文件 打开 Finder。按下快捷键 Command Shift . (点号键)。 这会立即切换显示/隐藏隐藏文件的状态。 使用终端永久设置 打开 终端&#xff…

【Linux打怪升级记 | 问题01】安装Linux系统忘记设置时区怎么办?3个方法教你回到东八区

🗺️博客地图 📍方法一、timedatectl 命令 📍方法二、手动链接 /etc/localtime 📍方法三、修改时区变量 在 Linux 系统中,可以通过以下3种方式将系统时区修改为 CST(中国标准时间,GMT8 或称 …