如何使用 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 !!!!
我正在尝试从 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 !!!!