Python 正在迭代许多json链接,但遇到jsondecode错误

Python 正在迭代许多json链接,但遇到jsondecode错误,python,json,mongodb,python-3.x,pymongo,Python,Json,Mongodb,Python 3.x,Pymongo,我有一个包含许多“视频”信息的JSON。在JSON中的每个“视频”中,都有另一个指向包含“消息”的新JSON的链接 我试图遍历“message”JSON链接,并将它们插入MongoDB数据库 问题是我得到了一个JSONDECODE错误。我做错了什么?我如何纠正 回溯(最近一次呼叫最后一次): 文件“/import_messages_dev.py”,第35行,在 raw\u messages\u data=requests.get(url3.json)() json格式的文件“venv1/lib/

我有一个包含许多“视频”信息的JSON。在JSON中的每个“视频”中,都有另一个指向包含“消息”的新JSON的链接

我试图遍历“message”JSON链接,并将它们插入MongoDB数据库

问题是我得到了一个JSONDECODE错误。我做错了什么?我如何纠正

回溯(最近一次呼叫最后一次):

文件“/import_messages_dev.py”,第35行,在 raw\u messages\u data=requests.get(url3.json)()

json格式的文件“venv1/lib/python3.6/site packages/requests/models.py”,第892行 返回complexjson.load(self.text,**kwargs)

文件“/usr/lib/python3.6/json/init.py”,第354行,加载 返回\u默认\u解码器。解码

文件“/usr/lib/python3.6/json/decoder.py”,第342行,在decode中 raise JSONDecodeError(“额外数据”,s,结束) json.decoder.JSONDecodeError:额外数据:第2行第1列(字符380)

更新以获取对答案的进一步帮助


所以,为了迭代并获取所有链接,逐行读取并将其解析为JSON,然后将其插入数据库,我尝试这样做,但它会产生一个新的错误

for i in raw_replay_data['data']['video_info']:
    url3 = i['msgfile']
    raw_message_data = urllib.request.urlopen(url3)
    for line in raw_message_data:
        json_data = json.loads(line)
        messages.insert_many(json_data)
新的错误是:

Traceback (most recent call last):
  File "/import_messages_dev.py", line 54, in <module>
    raw_message_data = urllib.request.urlopen(url3)
  File "/usr/lib/python3.6/urllib/request.py", line 223, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib/python3.6/urllib/request.py", line 532, in open
    response = meth(req, response)
  File "/usr/lib/python3.6/urllib/request.py", line 642, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python3.6/urllib/request.py", line 570, in error
    return self._call_chain(*args)
  File "/usr/lib/python3.6/urllib/request.py", line 504, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.6/urllib/request.py", line 650, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden
回溯(最近一次呼叫最后一次):
文件“/import_messages_dev.py”,第54行,在
原始消息数据=urllib.request.urlopen(url3)
urlopen中的文件“/usr/lib/python3.6/urllib/request.py”,第223行
返回opener.open(url、数据、超时)
文件“/usr/lib/python3.6/urllib/request.py”,第532行,打开
响应=方法(请求,响应)
http\u响应中的文件“/usr/lib/python3.6/urllib/request.py”,第642行
“http”、请求、响应、代码、消息、hdrs)
文件“/usr/lib/python3.6/urllib/request.py”,第570行出错
返回自我。调用链(*args)
文件“/usr/lib/python3.6/urllib/request.py”,第504行,在调用链中
结果=func(*args)
文件“/usr/lib/python3.6/urllib/request.py”,第650行,默认为http\u error\u
raise HTTPError(请求完整的url、代码、消息、hdrs、fp)
urllib.error.HTTPError:HTTP错误403:禁止

url3
可能包含此值:

包含单个词典,但整个文件不存储为JSON数组

结构如下:

   { "channelType":"TEMPGROUP", ... } # line 1
   { "channelType":"TEMPGROUP", ... } # line 2
所以需要逐行阅读,并将每一行解析为JSON

response = urllib.request.urlopen(url3)

for line in response:
    json_data = json.loads(line)
    # Do something with json_data

所以,为了迭代并获取所有链接,逐行读取并将其解析为JSON,然后将其插入数据库,我尝试这样做,但它会产生一个新的错误<代码>用于原始信息中的i回放信息数据['data']['video\u info']:url3=i['msgfile']raw\u message\u data=urllib.request.urlopen(url3)用于原始信息中的行数据:json\u data=json.loads(line)messages.insert\u many(json\u data)我已更新了原始问题,以获得更好的格式。我已将其放在原始问题的末尾。@aquatic7,将
用户代理
标题添加到urlopen中request@aquatic7,现在可以用了吗?供参考-
response = urllib.request.urlopen(url3)

for line in response:
    json_data = json.loads(line)
    # Do something with json_data