有一个代码可以从Openstreet Nominatim Api中获取数据。 网址是动态的,即lat和lon是从数据库中动态传递的,数据也是一一传递的。但是,这需要花费很多时间,因此尝试使其成为多进程,示例如下:
liste = [https://nominatim.openstreetmap.org/reverse.php?format=json&lat="+lat+"&lon="+lng+"&zoom=16&accept-language=en;q=0.8,.. ,..,..]
def get_url(url):
Operations
.
.
r = request.get(url)
value = r.json()
pool = Pool(processes=8)
results = pool.map(get_url,liste)
然而,openstreet网站阻止了我,因为每秒的请求限制为1个请求,所以我尝试在请求中使用代理功能:
proxies = [ip:port,ip:port,ip:port,ip:port...]
liste = [https://nominatim.openstreetmap.org/reverse.php?format=json&lat="+lat+"&lon="+lng+"&zoom=16&accept-language=en;q=0.8,.. ,..,..]
def get_url(url):
ma_list = ['http://'+x for x in proxies]
proxyDict = {"http" : ma_list}
headers = ''
r = requests.get(url,headers=headers, proxies=proxyDict)
value = r.json()
r = request.get(url)
value = r.json()
pool = Pool(processes=8)
results = pool.map(get_url,liste)
所以我想做的是,如果列表中有10个代理,则动态URL每次都用不同的ips命中,即使在一秒钟内命中4个请求,它们也会用不同的代理完成(基本循环浏览代理列表)。
但是我总是以一个错误结束:
[MaX retries exceeded with url:]
我做错了还是不可能?