Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用json文件使用url库_Python_Python 3.x_Urllib2 - Fatal编程技术网

Python 如何使用json文件使用url库

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_

我试图从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_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 !!!!