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

使用Beautiful Soup去除HTML标签时返回奇怪字符的问题

解决BeautifulSoup去除HTML标签时出现奇怪字符的问题

嘿,我来帮你搞定这个奇怪字符的问题!结合你的代码来看,最可能的原因和对应的解决方案如下:

一、核心问题:未处理gzip压缩的响应

你在headers里设置了Accept-Encoding: gzip, def...(看起来还截断了),服务器返回了gzip压缩后的内容,但你的代码没有正确处理解压,直接解析的话就会出现乱码/奇怪字符。

二、具体修复步骤

  • 修复请求头,让requests自动处理压缩
    requests的Session默认会自动解码gzip/deflate格式的响应,所以你可以直接去掉Accept-Encoding字段,或者写完整的取值,避免截断:

    headers = { 
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8'
        # 要么删掉下面这行,要么写完整:'Accept-Encoding': 'gzip, deflate, br'
    }
    
  • 使用正确的响应内容方式
    要用response.text来获取解码后的文本内容,而不是response.content(原始字节),这样BeautifulSoup才能正确解析:

    response = session.get(url, headers=headers)
    # 用response.text而不是response.content
    soup = BeautifulSoup(response.text, 'html.parser')
    
  • 补全缺失的导入语句
    你的代码里用到了sys.path.append但没导入sys,这会直接报错,记得补上:

    import sys  # 补上这个导入
    import SelectProxy
    from bs4 import BeautifulSoup, NavigableString
    import requests
    import json
    sys.path.append("G:\\Python27\\Kodi")
    
  • 指定解析器避免兼容问题
    Python2.7下使用BeautifulSoup时,建议明确指定解析器(比如html.parser或lxml),避免默认解析器带来的异常:

    soup = BeautifulSoup(response.text, 'html.parser')
    

三、测试提取纯文本的示例

修复后,你可以这样提取页面的纯文本,验证是否还有奇怪字符:

# 提取页面所有纯文本,strip=True去除多余空白
clean_text = soup.get_text(strip=True)
print(clean_text)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:37:00