【发布时间】:2016-01-16 15:02:15
【问题描述】:
我试图在 python 中抓取一个网站的价格,为此我正在查询一个 url api 端点(??)。当我复制粘贴带有参数的 url 时,我会在浏览器中获得完整的 JSON,并在 Chrome 开发者控制台中获得完整的 JSON。我的代码看起来像这样..
import requests
import json
api_woolies=('https://www.woolworths.com.au/apis/ui/Search/products?IsMultisearch=true&IsSpecial=false&PageNumber=1&PageSize=5&SearchTerm=chicken&SortType=Relevance') #the url
woolies_data=(requests.get(api_woolies))
print woolies_data.text # woolies_data.text actually contains full json what i want
woolies_data_=json.loads(woolies_data.text) # removes the part I want and leaves with jsondata i dont need
print woolies_data_
响应内容类型为 json。在woolies_data.json() 这样的响应对象上调用json,使用json.loads(woolies_data.text) 或json.loads(woolies_data.content) 会删除前面的所有数据并从corrections:none 开始,正如您在浏览器中看到的那样。我尝试使用json.dumps,但这会在所有键和值的开头添加反斜杠和逗号。我研究了这个错误,我知道如果数据已经被 json 化,就会发生这种情况。我只想将相关数据转换为 python 对象,以便我可以进行一些逻辑解析,例如调用 products.name/price,因为我想从客户端带来查询参数,所以我无法以当前的文本格式进行解析.这是一个真正的困境,因为我可以看到数据但没有做任何有用的事情。我也不相信字符串操作适合这个过程。如果有人能帮助我,我将不胜感激。
【问题讨论】:
-
请学习一下 Markdown (stackoverflow.com/editing-help),不要在代码中穿插 HTML 块,没有必要。
-
你能分享一下woolies_data.txt吗?也许 JSON 格式有问题...
-
我一定会这样做的。谢谢
标签: python json web web-scraping