我如何编辑此无效的json并解析在python中加载

时间:2018-07-03 09:57:51

标签: python json scrape

jsonCallback1530150433250_46028 && jsonCallback1530150433250_46028( {“ context”:“ synthesis%3Ddisabled%26q%3D%2523all%2Bcard_content_lang%253Aen%2B%2B%2B%2Bcard_content_type%253er%25% 2529%2B%26b%3D0%26s%3Ddesc%2528score_with_card_update_timestamp%2529%26output_format%3Djson%26callback%3

  • 上面是我想从下面的完整链接中解析的json的部分示例。

  • 主要问题是我无法从网上提取它,因为它无效。我以前使用的是json.loads(),但结构发生了变化。我如何使用不同的库或其他任何内容将整个json数据转换为字符串进行编辑?

  • 感谢您的帮助

这里是完整json的链接: https://apisearch.3ds.com/card_search_api?q=%23all%20card_content_lang%3Aen%20%20%20%20card_content_type%3A(%22career%22)%20&s=desc(score_with_card_update_timestamp)&b=0&hf=10&output_format=json&callback=jsonCallback1530150433250_46028

我暂时无法发布图片,但这是一种动物:

link = 'https://apisearch.3ds.com/card_search_api?q=%23all%20card_content_lang%3Aen%20%20%20%20card_content_type%3A(%22career%22)%20&s=desc(score_with_card_update_timestamp)&b=0&hf=10&output_format=json&callback=jsonCallback1530150433250_46028'   
response = requests.get(link)       
time.sleep(random.randint(3,5) 
json_obj = json.loads(response.text)
print json_obj

哪个给了我*ValueError: No JSON object could be decoded*

2 个答案:

答案 0 :(得分:0)

我不会在这里复制整个JSON数据,但这是要点。

x = "jsonCallback1530150433250_46028 && jsonCallback1530150433250_46028({the_json_data_you_want}"

我将在第一个“ (”处拆分,因为您需要后面的所有内容:

a = x.split('(', 1)
reqJson = a[1]
print(reqJson)

这将为您提供所需的JSON。现在您可以执行以下操作:

import json 
json_data = json.loads(reqJson) 

然后继续进行您想要达到的目标。

PS:请以可读格式编辑您的问题,以便其他人也可以为您提供帮助。

答案 1 :(得分:0)

您可能要做的是截断匹配的字符串,直到找到'{' 为此:

# split the json string with '{' as separator:
va1='jhdgfhsgdf&&sdkfhskjdfh({sdfhsj({})dfhsj})'
v1=va1.split('{')

# now delete the first element of the array
del v1[0]

# now join rest of the elements of the array to get proper json string
'{'.join(v1)