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

生成PNG与HTML文本文件异常:HTML文本文件内容为空求助

解决HTML文本保存为空的问题

看起来你这里踩了个小坑——你正在处理的response返回的是图片的二进制数据,不是HTML内容!

你看,第一个保存image.png的逻辑是对的,因为直接把二进制的response.body写入文件就是图片。但第二个操作里,你把图片的二进制数据尝试解码成UTF-8字符串,这根本得不到有效内容(甚至大概率会抛出解码错误),最后写入text.txt自然是空的或者乱码。

问题根源

你混淆了两个不同的请求响应:

  • 图片请求的response:body是二进制图片流,完全没有HTML内容
  • HTML页面请求的response:body是HTML文本的二进制编码,解码后才是有效HTML

解决方案

  1. 找准响应对象:确保你在处理返回HTML的那个请求的response,而不是图片请求的。比如你的爬虫里应该有两个不同的解析方法,分别处理页面和图片请求。

  2. 修正文本保存代码:保存HTML文本时,用正确的文件模式和方法:

def parse_html_response(self, response):
    # 直接用response.text,它会自动帮你处理编码问题
    with open('text.txt', 'w', encoding='utf-8') as f:
        f.write(response.text)

如果一定要手动解码,也应该用w模式(不是wb,wb是写二进制用的):

with open('text.txt', 'w', encoding='utf-8') as f:
    f.write(response.body.decode('utf-8'))
  1. 快速验证响应类型:可以先打印response.headers['Content-Type']确认,图片请求的Content-Type是image/png之类的,而HTML请求的是text/html。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:27:48