Python 3.4 HTTP错误505从url检索json
我正在尝试连接到一个页面,该页面使用urllib以Python 3.4的JSON格式接收一些值并返回一些数据。我想将json返回的值保存到csv文件中 这就是我试过的Python 3.4 HTTP错误505从url检索json,python,json,urllib,Python,Json,Urllib,我正在尝试连接到一个页面,该页面使用urllib以Python 3.4的JSON格式接收一些值并返回一些数据。我想将json返回的值保存到csv文件中 这就是我试过的 import json import urllib.request url = 'my_link/select?wt=json&indent=true&f=value' response = urllib.request.Request(url) response = urllib.request.url
import json
import urllib.request
url = 'my_link/select?wt=json&indent=true&f=value'
response = urllib.request.Request(url)
response = urllib.request.urlopen(response)
data = response.read()
我在下面得到一个错误:
urllib.error.HTTPError: HTTP Error 505: HTTP Version Not Supported
编辑:找到了我问题的解决方案。我在下面回答。您发现一个服务器显然不想与HTTP/1.1对话。您可以通过修补
HTTP.client.HTTPConnection
类,声称您使用的是HTTP/1.0客户机来欺骗它:
import http.client
http.client.HTTPConnection._http_vsn = 10
http.client.HTTPConnection._http_vsn_str = 'HTTP/1.0'
我们正在尝试您的请求。我使用了FancyURLopener,它成功了。我觉得这很有用:
希望这能帮助那些与我有相同问题的人。我忘了提到我正在vpn后面运行此脚本。这就是我收到这个错误的原因吗?@Cryssie如果你的VPN包含一个透明代理,也许。很难说,谢谢你的帮助。您的输入帮助我查看了与服务器通信的其他方式,我发现了在本例中有效的fancyURLopener。
url_request = urllib.request.FancyURLopener({})
with url_request.open(url) as url_opener:
json_data = url_opener.read().decode('utf-8')
with open(file_output, 'w', encoding ='utf-8') as output:
output.write(json_data)