我正在尝试从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']
如何解决此错误?
答案 0 :(得分:1)
您的问题答案是将代码更改为:
size_opts = json.loads(response.read().decode('utf-8'))['available_sizes']
在2018-10-02 22:55更改:我查看您的源代码并找到Response 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 !!!!
答案 1 :(得分:0)
您可以代替使用请求吗?
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)
给予
<Response [503]>
此响应的意思是:“ 503服务不可用。由于暂时的过载或计划的维护,服务器当前无法处理该请求”
我建议问题不是代码而是服务器?
答案 2 :(得分:0)
您错误地提供了数据参数...
您必须对标题使用关键字参数,否则第二个参数将填充位置输入,恰好是 data ,请尝试以下操作:
req = urllib.request.Request(url, headers=headers)
请参阅https://docs.python.org/3/library/urllib.request.html#urllib.request.Request,以获取请求签名的文档。