рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдиреБрд░реЛрдз v. 2.18.4 рдФрд░ 2.14.2 рдХреЗ рд╕рд╛рде, Python 3.6.1 рдФрд░ 3.6.2 рдХреЗ рд╕рд╛рде рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рд╣реИред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо-рд╕реНрдерд╛рдкрд┐рдд рдкрд╛рдпрдерди/рдЕрдиреБрд░реЛрдзреЛрдВ (рдкрд╛рдпрдерди 3.6.1 рдХреЗ рд╕рд╛рде рдореИрдХреЛрдЬрд╝ рд╕рд┐рдПрд░рд╛ рдХреЛ python.org рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рд╣реИ), рдХреЛрдВрдбрд╛ 4.3.25 рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдкрд╛рдпрдерди/рдЕрдиреБрд░реЛрдз, рдФрд░ рдирд╡реАрдирддрдо рдкрд╛рдпрдерди рдФрд░ рдХреЛрдВрдбрд╛-рдлреЛрд░реНрдЬ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред
рд╣рд░ рдЬрдЧрд╣ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдоред
рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, JSON рдорд╛рдиреЛрдВ рдХрд╛ рд╢рдмреНрджрдХреЛрд╢ рджреЗрдЦрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ: http://docs.python-requests.org/en/master/
рдкрд╛рдпрдерди рджреБрднрд╛рд╖рд┐рдпрд╛ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрддред
Python 3.6.2 | packaged by conda-forge | (default, Jul 23 2017, 23:01:38)
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
>>> r = requests.get('https://pypi.python.org/pypi')
>>> r.status_code
200
>>> r.encoding
'utf-8'
>>> r.json()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/psimpson/miniconda3/envs/test/lib/python3.6/site-packages/requests/models.py", line 892, in json
return complexjson.loads(self.text, **kwargs)
File "/Users/psimpson/miniconda3/envs/test/lib/python3.6/json/__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "/Users/psimpson/miniconda3/envs/test/lib/python3.6/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/Users/psimpson/miniconda3/envs/test/lib/python3.6/json/decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
$ python -m requests.help
{
"chardet": {
"version": "3.0.4"
},
"cryptography": {
"version": "2.0.3"
},
"idna": {
"version": ""
},
"implementation": {
"name": "CPython",
"version": "3.6.2"
},
"platform": {
"release": "16.7.0",
"system": "Darwin"
},
"pyOpenSSL": {
"openssl_version": "100020cf",
"version": "17.2.0"
},
"requests": {
"version": "2.18.4"
},
"system_ssl": {
"version": "100020cf"
},
"urllib3": {
"version": "1.22"
},
"using_pyopenssl": true
}
рдЕрд░реЗ @justlurking , рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред .json() рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рд╛рдордЧреНрд░реА рдкрд░ рдкреНрд░рдпреЛрдЧ рдпреЛрдЧреНрдп рд╣реИ рдЬреЛ рдХрд┐ json рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реИред рдЖрдк рдЬрд┐рд╕ рд╡реЗрдмрдкреЗрдЬ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдПрдХ HTML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд▓реМрдЯрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╡рд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдЖрдкрдХреЛ рдпрд╛ рддреЛ рдЕрдкрдиреЗ рдПрдХреНрд╕реЗрдкреНрдЯ рд╣реЗрдбрд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╡реИрдз рдЬреЗрд╕рди рдбреЗрдЯрд╛ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛
рд╕реБрдкрд░ рддреНрд╡рд░рд┐рдд рдФрд░ рд╕реВрдЪрдирд╛рддреНрдордХ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдФрд░ рдЕрдкрдирд╛ рд╕рдордп рдмрд░реНрдмрд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореБрдЭреЗ рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ рдХрд┐ рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдХрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдФрд░ рдЧрд┐рдЯрд╣рдм рдкрд░ рдЪрд┐рд▓реНрд▓рд╛рд╣рдЯ рдХреА рдХрдореА рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рджрд┐рдпрд╛ рд╣реЛред рдореИрдВ
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реЛрдЧреА рдХрд┐ json.JSONDecodeError рдЖрдпрд╛рдд рдХрд░реЗрдВ рдФрд░ рдРрд╕рд╛ рдХреБрдЫ рдХрд░реЗрдВ?
try:
r.json()
except JSONDecodeError as e:
<handle exception>
рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ ValueError рдХрд╛ рдЙрдкрд╡рд░реНрдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЗрд╕реЗ рдкрдХрдбрд╝ рдкрд╛рдПрдВрдЧреЗред рдпрд╣ рдЖрдк рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд┐рд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХреЗ рд╕реНрддрд░ рдХреЛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рд╡рд╣ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рд╡рд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ред рдЙрдореНрдореАрдж рд╣реИ рдХреА рд╡реЛ рдорджрдж рдХрд░рджреЗ!
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЕрд░реЗ @justlurking , рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред .json() рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рд╛рдордЧреНрд░реА рдкрд░ рдкреНрд░рдпреЛрдЧ рдпреЛрдЧреНрдп рд╣реИ рдЬреЛ рдХрд┐ json рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реИред рдЖрдк рдЬрд┐рд╕ рд╡реЗрдмрдкреЗрдЬ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдПрдХ HTML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд▓реМрдЯрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╡рд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдЖрдкрдХреЛ рдпрд╛ рддреЛ рдЕрдкрдиреЗ рдПрдХреНрд╕реЗрдкреНрдЯ рд╣реЗрдбрд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╡реИрдз рдЬреЗрд╕рди рдбреЗрдЯрд╛ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛