与代理IP集成时,Python请求模块错误

时间:2018-09-24 09:12:47

标签: python python-requests openstreetmap python-multiprocessing proxies

有一个代码可以从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:]

我做错了还是不可能?

0 个答案:

没有答案