Python 如何使用json文件使用url库
我试图从json链接获取数据,但我得到了以下错误:TypeError:无法将str转换为字节 这是我的代码:Python 如何使用json文件使用url库,python,python-3.x,urllib2,Python,Python 3.x,Urllib2,我试图从json链接获取数据,但我得到了以下错误:TypeError:无法将str转换为字节 这是我的代码: l = "https://www.off---white.com/en/IT/men/products/omch016f18d471431088s" url = (l+".json"+"?porcoiddio") req = urllib.request.Request(url, headers) response = urllib.request.urlopen(req) size_
l = "https://www.off---white.com/en/IT/men/products/omch016f18d471431088s"
url = (l+".json"+"?porcoiddio")
req = urllib.request.Request(url, headers)
response = urllib.request.urlopen(req)
size_opts = json.loads(response.decode('utf-8'))['available_sizes']
如何解决此错误?您可以使用请求来代替
import requests, json
l = "https://www.off---white.com/en/IT/men/products/omch016f18d471431088s"
url = (l+".json"+"?porcoiddio")
session = requests.Session()
session.mount('http://', requests.adapters.HTTPAdapter(max_retries=10))
size_opts = session.get(url, headers= {'Referer': 'off---white.com/it/IT/login', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}).json()['available_sizes']
要检查响应,请执行以下操作:
size_opts = session.get(url, headers= {'Referer': 'off---white.com/it/IT/login', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'})
print(size_opts)
给予
此响应表示:“503服务不可用。由于临时过载或计划维护,服务器当前无法处理请求”
我认为问题不在于代码,而在于服务器?您错误地提供了数据参数 您必须为标题使用关键字参数,否则第二个参数将填充位置输入,而位置输入恰好是数据,请尝试以下操作:
req = urllib.request.Request(url, headers=headers)
有关请求签名的文档,请参阅。您的问题答案是将代码更改为:
size_opts = json.loads(response.read().decode('utf-8'))['available_sizes']
更改时间:2018-10-02 22:55:我查看了您的源代码,发现响应503
,您得到503的原因是请求中不包含cookie:
req = urllib.request.Request(url, headers=headers)
你必须更新你的标题
headers.update({"Cookie":cookie_value})
req = urllib.request.Request(url, headers=headers) # !!!! you need a headers include cookies !!!!
获取此错误:从None中引发JSONDECODEROR(“预期值”,s,err.value)。JSONDECODEROR:预期值:第1行第1列(字符0)很抱歉,您是否
导入json
未做任何更改返回503服务不可用。由于临时过载或计划维护,服务器当前无法处理该请求。您的标题是什么?你能提供所有的代码吗?@deif headers={'Referer':'''User Agent':'Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,比如Gecko)Chrome/67.0.3396.99 Safari/537.36'}你如何获得json数据,该网站似乎在使用javascrip来检测您是否在使用浏览器。由于此cookie与您的网络环境相关联,请首先使用网站响应503并让您等待5秒钟以检查您是否正在使用浏览器访问,然后使用javascrip通过您的起始cookie创建url,此url将重置您的cookie。顺便问一下,你是如何在代码中获得json的(你的问题)@ChefTraian我想我应该编辑我的帖子,让你知道它是如何工作的?(我认为您需要selenium,因为不使用javascrip是非常困难的)这里是我的所有代码,当cloudflare在站点上脱机工作时,当我得到503@ChefTraian我已经运行了你的代码并修复了它,这是修复后的代码,顺便说一句,你有一个正确的选择,cfscrape比selenium作为解决方案更好
headers.update({"Cookie":cookie_value})
req = urllib.request.Request(url, headers=headers) # !!!! you need a headers include cookies !!!!