当前位置: 首页 > article >正文

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.kler.cn/a/443485.html

相关文章:

  • IDE和IDEA详解和具体差异
  • 【练习】PAT 乙 1022 D进制的A+B
  • 《Vue3实战教程》40:Vue3安全
  • 网络安全的学习与实践经验(附资料合集)
  • 第15章 汇编语言--- 数组与指针
  • 交换机关于环路、接口绑定、链路聚合的相关知识
  • go语言学习005——iris框架学习
  • Kibana 单机与集群部署教程
  • Maven 中央仓库访问过慢的解决方案--设置国内镜像
  • 从架构到实现:关系型数据库设计技术分享
  • LeetCode:226.翻转二叉树
  • 深度学习之超分辨率算法——FRCNN
  • 汽车SoC芯片及其安全岛设计与未来发展趋势(学习笔记)
  • 【Java Web】Axios实现前后端数据异步交互
  • 高防IP能够为游戏行业提供哪些防护?
  • paddle
  • python怎么循环嵌套
  • AIGC---------AIGC如何突破传统写作的边界?
  • springboot450房屋租赁管理系统(论文+源码)_kaic
  • Flink SQL 从一个SOURCE 写入多个Sink端实例
  • Django连接mysql数据库报错ModuleNotFoundError: No module named ‘MySQLdb‘
  • CCF-CV企业交流会:打造大模型时代的可信AI,探索AI安全治理新路径
  • Java多线程第一篇-认识多线程
  • 单片机锂电池电量电压检测
  • webGL硬核知识:图形渲染管渲染流程,各个阶段对应的API调用方式
  • C语言-稀疏数组转置