我试图从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请求/结构。
有人对此有任何想法或解决方案吗?如果您有任何疑问,请与我们联系。
答案 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