我在让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'
有什么建议吗? 感谢
答案 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)然后运行您的命令而无需在每个请求中对代理进行硬编码。