Python-Can不能从JSON Source中提取JSON格式

时间:2016-03-31 23:01:38

标签: python json web-scraping python-requests

我试图从Verizon的回购定价网站获取数据。我在通过" Net"时找到了信息的来源。在我的浏览器中请求。该网站采用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请求/结构。

有人对此有任何想法或解决方案吗?如果您有任何疑问,请与我们联系。

1 个答案:

答案 0 :(得分:0)

您需要发送User-Agent HTTP标头字段。试试这个程序:

import requests

url='https://www.verizonwireless.com/vzw/browse/tradein/ajax/deviceSearch.jsp?act=models&car=Verizon&man=Apple&siz=large'
# Put your own contact info in next line
headers = {'User-agent':'MyBot/0.1 (+user@example.com)'}
r = requests.get(url, headers=headers)
print(r.json()['models'][0]['name'])

结果:

iPhone 6S