如何使用 json 文件使用 url 库

How can I use url lib using a json file

我正在尝试从 json link 获取数据,但出现此错误:TypeError: can't concat str to bytes

这是我的代码:

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)

给予

<Response [503]>

此响应表示:“503 服务不可用。由于临时过载或定期维护,服务器当前无法处理请求”

我认为问题不是代码而是服务器?

您错误地提供了数据参数……

你必须为 headers 使用关键字参数,否则第二个参数将填充位置输入,恰好是 data,试试这个:

req = urllib.request.Request(url, headers=headers)

有关请求签名的文档,请参阅https://docs.python.org/3/library/urllib.request.html#urllib.request.Request

您的问题答案是将您的代码更改为:

size_opts = json.loads(response.read().decode('utf-8'))['available_sizes']

2018-10-02更改 22:55 : 我查看你的源代码发现 Response 503 ,你得到503的原因是请求不包含cookies:

req = urllib.request.Request(url, headers=headers)

您已更新 headers。

headers.update({"Cookie":cookie_value})
req = urllib.request.Request(url, headers=headers) # !!!! you need a headers include cookies !!!!