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

引言

在网络数据获取的过程中,我们常常需要从网页中提取有用的文字信息。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.rhkb.cn/news/492723.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python总说的cd是什么

以下适用于windows环境 cd就是change directory的缩写,即改变目录。 讲cd命令之前,先来看看提示符是什么意思。现在的提示符是c:\> c:说明现在的工作盘是c盘,\告诉我们当前的工作目录是根目录。 >的作用是把工作目录和我们要输入的…

【记录50】uniapp安装uview插件,样式引入失败分析及解决

SassError: Undefined variable: "$u-border-color". 表示样式变量$u-border-color没定义&#xff0c;实际是定义的 首先确保安装了scss/sass 其次&#xff0c;根目录下 app.vue中是否全局引入 <style lang"scss">import /uni_modules/uview-ui/in…

Webpack简单介绍及安装

一、介绍 Webpack 是一个现代 JavaScript 应用程序的静态模块打包器&#xff08;module bundler&#xff09;。它将应用程序中的所有依赖项&#xff08;JavaScript、图片、CSS 等&#xff09;打包成一个或多个 bundle。这样做的主要目的是减少加载时间和提高应用程序的加载性能…

vscode不同的项目使用不同的环境变量或编译环境

转载请标明出处&#xff1a;小帆的帆的博客 假如电脑中安装的两套C编译环境&#xff0c;想要切换编译环境时可以在操作系统的环境变量中调整顺序&#xff0c;然后排在前面的环境就会被使用。 这样做的弊端&#xff1a; 麻烦容易忘&#xff0c;忘了项目不报错就可能就不会发现…

汽车IVI中控开发入门及进阶(三十九):ADAS的车道线检测

概述: 自动驾驶汽车中确保驾驶员和乘客安全环境的重要系统之一是高级驾驶员辅助系统(ADAS)。自适应巡航控制、自动制动/转向、车道保持系统、盲点辅助、车道偏离警告系统和车道检测都是ADAS的示例。车道检测向车辆的智能系统显示特定于车道线结构几何特征的信息,以显示车道…

在Win11系统上安装Android Studio

诸神缄默不语-个人CSDN博文目录 下载地址&#xff1a;https://developer.android.google.cn/studio?hlzh-cn 官方安装教程&#xff1a;https://developer.android.google.cn/studio/install?hlzh-cn 点击Next&#xff0c;默认会同时安装Android Studio和Android虚拟机&#…

如何在 Ubuntu 22.04 上安装 MySQL

简介 MySQL 是开发人员最常用的数据库之一&#xff0c;因为它在功能、性能和易用性之间取得了平衡&#xff0c;提供了高性能、可扩展性、安全性、灵活性和低成本。在本教程中&#xff0c;我们将向您展示如何在七个步骤中在 Ubuntu 22.04 上安装 MySQL。我们包括安装、配置、保…

使用Dynadot API确定当前是否有正在执行中的请求

前言 Dynadot是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 Dynadot平台操作教程索引&#xff08;包括域名邮箱&…

02、服务器的分类和开发项目流程

硬件介绍 1、服务器分类2.开发流程 1、服务器分类 1.1 服务器分类 1u服务器&#xff08;u表示服务器的厚度&#xff09; 1U4.45cm&#xff1b; 4u服务器&#xff08;u表示服务器的厚度&#xff09; &#xff0c; 服务器有两个电源模块&#xff0c;接在不同的电源&#xff0c;…

[创业之路-199]:《华为战略管理法-DSTE实战体系》- 3 - 价值转移理论与利润区理论

目录 一、价值转移理论 1.1. 什么是价值&#xff1f; 1.2. 什么价值创造 &#xff08;1&#xff09;、定义 &#xff08;2&#xff09;、影响价值创造的因素 &#xff08;3&#xff09;、价值创造的三个过程 &#xff08;4&#xff09;、价值创造的实践 &#xff08;5&…

后摩尔定律时代,什么将推动计算机性能优化的发展?

在摩尔定律时代&#xff0c;每两年芯片上的晶体管数量就会翻一番&#xff0c;这一看似不可避免的趋势被称为摩尔定律&#xff0c;它极大地促进了计算机性能的提高。然而&#xff0c;硅基晶体管不可能一直小下去&#xff0c;半导体晶体管的微型化推动了计算机性能的提升&#xf…

LeetCode:144.前序遍历

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;144. 二叉树的前序遍历 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 示例 1&#x…

pdf文件中的表格无损提取方案(pdf转Excel),非OCR

非OCR方案&#xff0c;基于java&#xff1a; aspose 21.11版本&#xff08;网上有破解方法&#xff0c;或者参考我另外一篇文章&#xff09; 转换pdf&#xff08;含表格&#xff09;为excel文件&#xff0c;然后可以使用poi对得到的excel文件进行微调。 但是上述方案&#x…

第十七章:反射+设计模式

一、反射 1. 反射(Reflection)&#xff1a;允许在程序运行状态中&#xff0c;可以获取任意类中的属性和方法&#xff0c;并且可以操作任意对象内部的属 性和方法&#xff0c;这种动态获取类的信息及动态操作对象的属性和方法对应的机制称为反射机制。 2. 类对象 和 类的对象(实…

【Linux】结构化命令:for命令

1、基本介绍 for循环假定各个值之间是以空格、制表符或换行符分隔的&#xff0c;因为特殊的环境变量IFS&#xff08;internal field separator&#xff0c;内部字段分隔符&#xff09;&#xff0c;默认情况下&#xff0c;它会将这三者视为字段分隔符。 格式&#xff1a; for v…

Nginx(Linux之Ubuntu)

1.1.什么是Nginx Nginx&#xff08;发音为"engine x"&#xff09;是由俄罗斯开发者Igor Sysoev创建的一款轻量级、高性能的Web服务器。它首次发布于2004年&#xff0c;如今已成为全球最受欢迎的Web服务器之一。Nginx以其卓越的性能和灵活性而闻名&#xff0c;适用于…

vue3+TS+vueX的记录

要求&#xff1a;在页面中使用输入框输入回车后将数据保存到vuex中的数组list中 list为一个数组 内部三个属性为 id value status id为时间戳 value为string 输入的字符串 status为定义的三种状态 待办 在办 完成 1、创建仓库 将 仓库拆分 import { createStore } fro…

【图像分类实用脚本】数据可视化以及高数量类别截断

图像分类时&#xff0c;如果某个类别或者某些类别的数量远大于其他类别的话&#xff0c;模型在计算的时候&#xff0c;更倾向于拟合数量更多的类别&#xff1b;因此&#xff0c;观察类别数量以及对数据量多的类别进行截断是很有必要的。 1.准备数据 数据的格式为图像分类数据集…

Javascript-web API-day02

文章目录 01-事件监听02-点击关闭广告03-随机点名案例04-鼠标经过或离开事件05-可点击的轮播图06-小米搜索框07-键盘类型事件08-键盘事件-发布评论案例09-focus选择器10-评论回车发布11-事件对象12-trim方法13-环境对象14-回调函数15-tab栏切换 01-事件监听 <!DOCTYPE html…

c语言-------循环结构

基本概念 循环结构是C语言中一种重要的程序控制结构&#xff0c;它允许程序在满足一定条件的情况下&#xff0c;反复执行一段代码。这可以避免重复编写相似的代码&#xff0c;提高代码的效率和可读性。 while循环 语法格式 while (条件表达式) { 循环体语句; } 执行流程 首先判…