You need to enable JavaScript to run this app. Python爬取Pastebin内容存TXT时遇UnicodeEncodeError求助
优惠活动
大模型
产品
解决方案
定价
更多

Python爬取Pastebin内容存TXT时遇UnicodeEncodeError求助

编码报错与代码缺陷修复

报错根因

你遇到的 UnicodeEncodeError 本质是打开本地输出文件时未显式指定编码:Windows 环境下 Python 的默认文件编码会跟随系统区域设置,当前堆栈显示你的环境使用了 cp1252 编码,这种字符集不支持 \u2694(特殊符号⚔)这类扩展字符,写入时就会触发编码失败。
除了这个直接报错的点,原代码还有两个容易忽略的隐患:

  • x.close 方法没有加括号,实际没有执行关闭操作,会导致文件句柄泄漏、写入内容未刷新到磁盘
  • 使用 a+ 模式打开输出文件时,重复运行脚本会把相同内容重复追加到文件末尾

修复后的完整代码

import requests
# 用with管理链接读取流程,自动关闭文件
with open("file.txt", "r", encoding="utf-8") as f:
    # 跳过链接文件里的空行,避免无效请求
    link_list = [line.rstrip("\n") for line in f if line.strip()]

for line in link_list:
    link = line.rstrip("\n")
    # 转换为raw格式链接
    n_link = link.replace("https://pastebin.com/", "https://pastebin.com/raw/")
    pastebin_id = n_link.replace("https://pastebin.com/raw/", "")
    # 加通用请求头,避免被目标站点拦截默认的Python请求
    req_headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0.0.0"
    }
    r = requests.get(n_link, timeout=3, headers=req_headers)
    # 强制指定响应编码为UTF-8,避免requests自动识别编码出错
    r.encoding = "utf-8"
    # 打开输出文件时显式指定UTF-8编码,用with自动管理文件关闭
    with open(f"{pastebin_id}.txt", "w", encoding="utf-8") as out_file:
        out_file.write(r.text)

改动说明

  • 所有文件读写操作都用 with 上下文管理器包裹,不需要手动调用close,程序执行完会自动释放文件资源,避免手动关文件漏写、写错的问题
  • 写入文件时显式添加 encoding="utf-8" 参数,彻底解决特殊字符无法编码的报错
  • 给请求添加通用浏览器UA头,避免被Pastebin拦截默认的python-requests客户端
  • 强制指定响应编码为UTF-8,避免requests根据响应头猜编码不准导致的中文、特殊字符乱码
  • 把文件打开模式从 a+ 调整为 w,每次运行都会覆盖旧文件,避免重复写入相同内容;如果需要追加写入,把模式改成 a 即可
  • 增加空行判断,跳过链接文件里的空行,减少无效请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 12:15:03