[英]Trying to get json data from URL using Python
我正在學習從鏈接獲取json數據,並在以后使用該數據。 但是我收到錯誤消息:“ RuntimeError:調用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())
不要使用漂亮的湯來處理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數據,則可以使用漂亮的湯單獨解析那些字符串值。 如果您在包含html的json上有一個名為content的鍵,則可以這樣解析它:
BeautifulSoup(newDictionary.content, "lxml")
如果您有不完整的html,則可能需要嘗試使用其他解析器。
以下是如何使用已通過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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.