Python 3.x 目标计算机拒绝连接

Python 3.x 目标计算机拒绝连接,python-3.x,geopy,nominatim,Python 3.x,Geopy,Nominatim,大家好,这段代码非常简单,它使用geopy来提取县名,使用了3种不同的方法名称iden1、iden2和iden3,它们是地址、城市、州和zipcode的组合。这本书大约有300行写得很好,但开始重复同一个县,在重新启动脚本后,只写出了一行。我输入了行print(geologitor.geocode(iden2.address))来查找错误,并得到了这个错误消息 回溯(最近一次呼叫最后一次): 文件“C:/Users/###########################县.py”, 第19行,在

大家好,这段代码非常简单,它使用geopy来提取县名,使用了3种不同的方法名称iden1、iden2和iden3,它们是地址、城市、州和zipcode的组合。这本书大约有300行写得很好,但开始重复同一个县,在重新启动脚本后,只写出了一行。我输入了行print(geologitor.geocode(iden2.address))来查找错误,并得到了这个错误消息

回溯(最近一次呼叫最后一次):

文件“C:/Users/###########################县.py”, 第19行,在 打印(geolocator.geocode(iden2.address)文件“C:\Users\AppData\Local\Programs\Python\Python36-32\lib\site packages\geopy\geocoders\osm.py”, 第193行,地理代码 self.\u调用地理编码器(url,timeout=timeout),正好是一个文件“C:\Users\AppData\Local\Programs\Python\Python36-32\lib\site packages\geopy\geocoders\base.py”, 第171行,输入呼叫地理编码器 引发GeocoderServiceError(消息)geopy.exc.GeocoderServiceError:[WinError 10061]无法连接 由于目标机器主动拒绝,因此无法生成


此脚本以前可以工作,但现在不能。我的IP被阻止使用goepy的数据库还是什么?谢谢你的帮助

看来你达到了他们的费率限制。他们似乎要求您将API请求限制为1/s。您可以查看他们的使用策略,其中列出了使用API的替代方案以及限制条件。

看起来您达到了他们的费率限制。他们似乎要求您将API请求限制为1/s。您可以查看他们的使用策略,其中列出了使用API的替代方案以及禁忌。

它已恢复工作,我不知道为什么。aaaa而且它不再工作了哈哈!嗯,看起来在它停止对我工作之前,我可以得到大约300个条目。一定是因为查找限制或类似的原因。它已经恢复工作了,我不知道为什么。啊,它不再工作了哈哈!嗯,看起来在它停止对我工作之前,我可以得到大约300个条目。必须与查找限制或类似的内容有关。感谢您的回复!因此,如果我简单地告诉脚本在每个循环迭代结束时等待,这应该可以解决问题,不是吗?我相信我对API的使用符合他们的使用政策。是的,如果您让脚本在发出另一个请求之前等待1秒,那么它应该可以工作。请注意,执行脚本需要1810秒。你可以考虑让它稍等片刻,以确定。谢谢你的回应!因此,如果我简单地告诉脚本在每个循环迭代结束时等待,这应该可以解决问题,不是吗?我相信我对API的使用符合他们的使用政策。是的,如果您让脚本在发出另一个请求之前等待1秒,那么它应该可以工作。请注意,执行脚本需要1810秒。你可以考虑让它等一会儿,只要确定。
from geopy.geocoders import Nominatim
import openpyxl
wb = openpyxl.load_workbook('#######.xlsx')
ws = wb.active
geolocator = Nominatim(timeout=60)

for i in range(2,1810):
    count1 = 0
    count2 = 1
    address = str(ws['B'+str(i)].value)
    city = str(ws['C'+str(i)].value)
    state = str(ws['D'+str(i)].value)
    zipc = str(ws['F'+str(i)].value)
    result = None
    iden1 = address + ' ' + city + ' ' + state
    iden2 = city + ' ' + zipc + ' ' + state
    iden3 = city + ' ' + state
    print(iden1, iden2, iden3)
    print(geolocator.geocode(iden2).address)
    try:
        location1 = geolocator.geocode(iden1)
    except:
        pass
    try:
        location2 = geolocator.geocode(iden2)
    except:
        pass
    try:
        location3 = geolocator.geocode(iden3)
    except:
        pass
    count = None
    try:
        county1 = str(location1.address)
        county1_list = county1.split(", ")
        #print(county1_list)
        for q in county1_list:
            if 'county' in q.lower():
                if count == None:
                    count = q
    except:
        pass
    try:
        county2 = str(location2.address)
        county2_list = county2.split(", ")
        #print(county2_list)
        for z in county2_list:
            if 'county' in z.lower():
                if count == None:
                    count = z
    except:
        pass
    try:
        county3 = str(location3.address)
        county3_list = county3.split(", ")
        #print(county3_list)
        for j in county3_list:
            if 'county' in j.lower():
                if count == None:
                    count = j
    except:
        pass
    print(i, count)
    #ws['E'+str(i)] = count
    if count == 50:
        #wb.save("#####" +str(count2) +".xlsx")
        count2 += 1
        count1 = 0