【发布时间】:2016-03-31 23:01:37
【问题描述】:
我正在尝试从 Verizon 的回购定价网站抓取数据。我在浏览器中通过“网络”请求时找到了信息的来源。该网站是 JSON 格式,但我不会下载该数据https://www.verizonwireless.com/vzw/browse/tradein/ajax/deviceSearch.jsp?act=models&car=Verizon&man=Apple&siz=large
我不记得我尝试过的所有内容,但这是我遇到的问题。另外,我不确定如何插入多个代码块。
import json,urllib,requests
res=urllib.request.urlopen(url)
data=json.loads(res)
TypeError: the JSON object must be str, not 'bytes'
import codecs
reader=codecs.getreader('utf-8')
obj=json.load(reader(res))
ValueError: Expecting value: line 1 column 1 (char 0)
#this value error happens with other similar attempts, such as....
res=requests.get(url)
res.json()#Same error Occurs
在这一点上,我已经研究了很多小时,但找不到解决方案。我假设该网站的格式不正常,或者我遗漏了一些明显的东西。我在我的 Web 开发人员工具中看到了 JSON 请求/结构。
有人对此有任何想法或解决方案吗?如果您有任何问题,请告诉我。
【问题讨论】:
-
这是因为 Verizon 正在发回一个 HTML 页面,其中包含隐藏在 HTML 标签中的 JSON 外观的内容,而不是 JSON 格式的字符串(
.json()将其作为输入)。 This answer 应该可以帮到你。
标签: python json web-scraping python-requests