在代理

时间:2015-11-13 13:23:47

标签: python google-maps-api-3 proxy

我在让googlemaps距离矩阵功能在代理后面工作时遇到了问题。 没有代理,这段代码可以正常工作:

import googlemaps
gmaps = googlemaps.Client(key=googleAPIkey)    
commuteData = gmaps.distance_matrix(origins, destination, mode=mode, language=language, avoid=avoid, units=units)

我已尝试设置代理

gmaps = googlemaps.Client(key=googleAPIkey, requests_kwargs={'proxies':"http://<proxy server>"})

当我单步执行代码时,请求代理变量似乎设置正确,但我收到错误

googlemaps.exceptions.TransportError: 'str' object has no attribute 'get'

有什么建议吗? 感谢

1 个答案:

答案 0 :(得分:0)

https://github.com/googlemaps/google-maps -services-python / issues / 83 ,googlemaps客户端实际上只是将该值传递给请求。请求的代理值旨在成为字典( http:// www。 python-requests.org/en/latest/api/#main-interface ),该字典应将协议映射到代理的URL。

&#xA;&#xA;

所以,我认为你想要:

&#xA;&#xA;
  gmaps = googlemaps.Client(key = googleAPIkey,requests_kwargs = {'proxies':{“http”:“http: //&lt;代理服务器&gt;“,”https“:”http://&lt; proxy_server&gt;“})&#xA;  
&#xA;&#xA;

(假设您的代理已设置,因此相同的代理端口将同时适用于http和https)

&#xA;&#xA;

此外:通常,如果您运行此命令,python请求会尊重环境来自Linux或Windows(可能是Mac);你应该能够做到(在你的应用之外,如果你真的想通过os.environ在里面) export http_proxy = http:// proxyserver (或 http:// proxyserver:3128 如果没有监听80)然后运行您的命令而无需在每个请求中对代理进行硬编码。

&#xA;