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

Python 3.6使用nytimesarticle包爬取时报错:TypeError: must be str, not bytes

解决Python3.6下nytimesarticle包搜索时的TypeError: must be str, not bytes问题

我之前也踩过这个坑!nytimesarticle是个比较老的第三方包,当初是针对Python2写的,没完全适配Python3的字符串类型差异,所以才会触发这个错误。下面是具体的解决步骤:

问题根源

Python3中,urllib.request.urlopen()返回的响应是bytes类型,而这个包的原有代码直接把bytes传给了json.load()——这个方法在Python3里只接受字符串或文件对象,不接受bytes,因此抛出类型错误。

  • 找到包的核心文件:
    打开Python3.6的site-packages目录(比如Windows下是C:\Python36\Lib\site-packages,Linux/macOS下是/usr/local/lib/python3.6/site-packages),找到nytimesarticle文件夹,打开里面的api.py文件。

  • 修改响应处理代码:
    找到文件中类似下面的代码块(通常在_request方法里):

    response = urlopen(request)
    data = json.load(response)
    

    把它替换成:

    response = urlopen(request)
    # 将bytes响应解码为utf-8字符串
    response_content = response.read().decode('utf-8')
    data = json.loads(response_content)
    
  • 保存文件并重新运行代码:
    修改完成后,保存api.py,然后重新执行你的搜索代码,比如:

    from nytimesarticle import articleAPI
    # 替换成你的NYT API密钥
    api = articleAPI('your_api_key_here')
    # 执行搜索
    results = api.search(q='technology')
    print(results)
    

这样就能解决bytes和str不兼容的问题了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:18:13