TypeError:string indices must be integers

问题描述:通过fiddler找到指定的端口,获取到想要的json数据,但是在筛选数据时,出现了以上的错误

{
    "error_code": 0,
    "list": [{
        "hero_id": "129",
        "name": "上官婉儿",
        "cover": "http:\/\/pic.wankacn.com\/2018-11-13_5bea360053aa8.png",
        "type": ["2"],
        "tags": 1
    }
   .....
   .....
   .....

正常的操作应该是

print(result['error_code'])

这时的结果应该是0

注:实际结果为TypeError:string indices must be integers

解决办法

需要引入json模块,再执行print(json.loads(result['error_code']))

以下是源代码,对王者荣耀盒子所有英雄的抓取

import requests
import json

result = requests.get('http://gamehelper.gm825.com/wzry/hero/list?channel_id=90001a&app_id=h9044j&game_id=7622&game_name=%E7%8E%8B%E8%80%85%E8%8D%A3%E8%80%80&vcode=13.0.2.1&version_code=13021&cuid=2ABF1E53291068786594240D77B54577&ovr=4.4.2&device=HUAWEI+_HUAWEI+MLA-AL10&net_type=1&client_id=7w0cv%2BaysYce1FlgGgJX8A%3D%3D&info_ms=DanZQw1N0z4Bj0HxbaP48g%3D%3D&info_ma=2He45aFvHvPkuUZrcj7tnQfztiUwLGcrZZTydNpuZM4%3D&mno=0&info_la=HnsCMQrvfAXjg2Bdt9pyQg%3D%3D&info_ci=HnsCMQrvfAXjg2Bdt9pyQg%3D%3D&mcc=0&clientversion=13.0.2.1&bssid=2He45aFvHvPkuUZrcj7tnQfztiUwLGcrZZTydNpuZM4%3D&os_level=19&os_id=507b9d3402088775&resolution=720_1280&dpi=240&client_ip=192.168.13.28&pdunid=d3402088775507b9')

content = result.content.decode("utf8")
# 这里将str类型的content转换成了dict类型的
content = json.loads(content)
print(len(content["list"]))
for i in range(0,len(content['list'])):
    # 这里的strip('\\')是去除字符串内部的所有'\'
    hero_img = content['list'][i]['cover'].replace("\\",'')
    print(content['list'][i]['name']+hero_img)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容