You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将网页提取信息保存至独立TXT文件?附现有爬虫代码

解决方案:每个URL生成独立TXT文件

我来帮你搞定这个问题!你现在的代码是把所有博客内容攒到一起最后存成一个文件,要改成每个URL对应独立文件其实很简单,核心就是在遍历每个URL的循环里直接处理并保存该URL的内容,而不是先收集所有内容再统一输出。

问题分析

原来的代码逻辑是把所有URL的内容都追加到i列表里,最后转成DataFrame存成单个txt文件。要实现每个URL对应独立文件,我们需要把「内容写入」的操作移到每个URL的循环内部,同时为每个URL生成唯一合法的文件名。

修改后的完整代码

import urllib
from bs4 import BeautifulSoup
import pandas as pd
import time
from urllib.parse import urlsplit  # 用于处理URL生成安全文件名

# 读取Excel中的网址列表
crawl = pd.read_excel('C:/Users/Acer/Desktop/internal_all2.xlsx')
addresses = crawl['Address'].tolist()

# 遍历每个网址,同时记录索引(方便生成唯一文件名)
for index, url in enumerate(addresses):
    time.sleep(5)
    response = urllib.request.urlopen(url)
    soup = BeautifulSoup(response, 'html.parser')
    content = soup.find_all('p')
    
    # 整理当前URL的所有段落内容(提取纯文本,过滤空段落)
    blog_content = f"来源URL: {url}\n\n"
    for p_tag in content:
        paragraph = p_tag.get_text(strip=True)
        if paragraph:  # 跳过空的段落
            blog_content += paragraph + "\n\n"
    
    # 生成安全合法的文件名(避免Windows系统的非法字符)
    # 方案1:基于URL的域名+路径生成,替换特殊字符
    url_parts = urlsplit(url)
    safe_filename_part = f"{url_parts.netloc}{url_parts.path}".replace('/', '_').replace(':', '_')
    filename = f"C:/Users/Acer/Desktop/scripts/content/{index}_{safe_filename_part}.txt"
    
    # 方案2:简单用索引命名(更简洁),比如 blog_0.txt、blog_1.txt...
    # filename = f"C:/Users/Acer/Desktop/scripts/content/blog_{index}.txt"
    
    # 写入文件,指定UTF-8编码避免乱码
    with open(filename, 'w', encoding='utf-8') as f:
        f.write(blog_content)
    
    print(f"已完成保存: {filename}")

关键修改点说明

  • 移动写入逻辑到循环内:不再把所有内容收集到列表,而是处理完一个URL就立即写入对应的文件
  • 生成安全文件名:用urlsplit拆分URL,把域名和路径里的特殊字符(比如/、:)替换成下划线,避免Windows系统无法识别的文件名
  • 提取纯文本内容:用p_tag.get_text(strip=True)提取段落的纯文本,而不是直接保存BeautifulSoup对象,让文件内容更干净
  • 编码优化:打开文件时指定encoding='utf-8',避免中文、特殊字符出现乱码
  • 可选文件名方案:如果不需要基于URL命名,可以用更简洁的索引命名方式(注释里的方案2)

如果遇到文件名太长或者其他细节问题,随时调整文件名生成逻辑就好!

内容的提问来源于stack exchange,提问作者Jonas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 18:13:11