爬虫报错:LookupError: unknown encoding: application/json

源代码

import json
from urllib.request import Request, urlopen
from urllib.parse import urlencode

import ssl

ssl._create_default_https_context = ssl._create_unverified_context

url = ' '  # 请求的API接口

headers = {
    'User-Agent': ' ',
    'Cookie': ' ',
    'x-requested-with': 'XMLHttpRequest'
}

def fanyi(kw):
    data = {
        'kw': kw
    }

    # Request() 中的data参数是byte类型
    # data不为空时,是post请求
    req = Request(url,
                  data=urlencode(data).encode('utf-8'),
                  headers=headers)

    resp = urlopen(req)
    assert resp.code == 200

    json_data = resp.read()  # byte

    content_encode = resp.getheader('Content-Type')
    content_encode = 'utf-8' if content_encode is None else content_encode.split('=')[-1]
    
    return json.loads(json_data.decode(content_encode))


if __name__ == '__main__':
    print(fanyi('orange'))

解决以上代码报错:return json.loads(json_data.decode(content_encode))
LookupError: unknown encoding: application/json

要解决return json.loads(json_data.decode(content_encode))代码行中的LookupError: unknown encoding: application/json错误,可以使用try-except语句来捕捉该异常,并使用默认的UTF-8编码处理 JSON 数据。

更新的代码如下所示:

try:
    return json.loads(json_data.decode(content_encode))
except LookupError:
    return json.loads(json_data.decode('utf-8'))

在这个更新的代码中,我们尝试使用 content_encode 解码 JSON 数据。如果发生 LookupError 异常,说明编码未知或无法识别为有效的编码格式。在这种情况下,我们将使用默认的 utf-8 编码来解码 JSON 数据。

这样,即使出现编码未知的情况,代码也能正确处理并解码 JSON 数据。

更新后的代码应该能够正确处理 JSON 数据,并解决LookupError: unknown encoding: application/json错误。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值