我正在学习从链接获取json数据并在以后使用该数据。但我收到错误:“运行时错误:调用Python对象时超出了最大递归深度”
这是我的代码:
import json
import requests
from bs4 import BeautifulSoup
url = "http://example.com/category/page=2&YII_CSRF_TOKEN=31eb0a5d28f4dde909d3233b5a0c23bd03348f69&more_products=true"
header = {'x-requested-with': 'XMLHttpRequest'}
mainPage = requests.get(url, headers = header)
xTree = BeautifulSoup(mainPage.content, "lxml")
newDictionary=json.loads(str(xTree))
print (newDictionary)
编辑:好的,我收到了使用这个小改动的响应数据,这是新代码:
import json
import requests
from bs4 import BeautifulSoup
url = "http://example.com/category/page=2&YII_CSRF_TOKEN=31eb0a5d28f4dde909d3233b5a0c23bd03348f69&more_products=true"
header = {'x-requested-with': 'XMLHttpRequest'}
mainPage = requests.get(url, headers = header
print (mainPage.json())
答案 0 :(得分:2)
不要使用漂亮的汤来处理json http响应。使用类似请求的内容:
url = "https://www.daraz.pk/womens-kurtas-shalwar-kameez/?pathInfo=womens-kurtas-shalwar-kameez&page=2&YII_CSRF_TOKEN=31eb0a5d28f4dde909d3233b5a0c23bd03348f69&more_products=true"
header = {'x-requested-with': 'XMLHttpRequest'}
t = requests.get(url, headers=True)
newDictionary=json.loads(t)
print (newDictionary)
美丽的汤对象不能用json.loads()解析。
如果你在某些json键上有HTML数据,那么你可以使用漂亮的汤来分别解析这些字符串值。如果你的json上有一个名为content的键,包含html,你可以这样解析它:
BeautifulSoup(newDictionary.content, "lxml")
如果你有碎片html,你可能需要尝试不同的解析器。
答案 1 :(得分:0)
以下是如何使用已作为json.loads()
对象加载的各种JSON数据的示例。
工作示例 - 使用Python 2.6.9 和 2.7.10 以及 3.3.5 和<进行测试强> 3.5.0 强>
import json
json_data = '''
{
"array": [
1,
2,
3
],
"boolean": true,
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d",
"e": "f"
},
"string": "Hello World"
}
'''
data = json.loads(json_data)
list_0 = [
data['array'][0],
data['array'][1],
data['array'][2],
data['boolean'],
data['null'],
data['number'],
data['object']['a'],
data['object']['c'],
data['object']['e'],
data['string']
]
print('''
array value 0 {0}
array value 1 {1}
array value 2 {2}
boolean value {3}
null value {4}
number value {5}
object value a value {6}
object value c value {7}
object value e value {8}
string value {9}
'''.format(*list_0))
<强>输出强>
array value 0 1
array value 1 2
array value 2 3
boolean value True
null value None
number value 123
object value a value b
object value c value d
object value e value f
string value Hello World