所以我正在构建一个脚本,以便从Twitter帖子中获取给定的位置,将它们输出到mapquest api的批处理请求中,因为我不想为一个小项目而为Google付费。我想不出另一种方法,因为大多数位置都包含表情符号和我无法轻易删除的特殊符号。无论如何,在将所有位置组合在一起之前,我会测试所有url以确保它们不会出错,如果可以,我将跳过它们并移至下一个。这是我正在使用的功能:
def searchloop(self,url, locations):
iterations = len(locations)//100
i=0
countries = []
states = []
num_loc = len(locations)
loc_count = 0
while i <= iterations:
print('{0} Iterations remaining...'.format(iterations - i),end='\r',flush = True)
count = 0
url_loop = url
if loc_count == num_loc:
break
else:
for location in locations:
loc_string = str(location)
utf8_convert = loc_string.encode('utf-8')
convert_encoded = ur.quote(utf8_convert)
if count >= 100:
break
else:
search = '&location='+convert_encoded
url_test = ur.urlopen(url+search).getcode()
if url_test < 400:
url_loop+=search
else:
pass
del locations[i]
count += 1
loc_count+=1
search_url = (url_loop + '&outFormat=json&maxResults=1')
# print(search_url)
request = ur.urlopen(search_url)
charset = request.info().get_content_charset()
content = request.read().decode(charset)
data = json.loads(content)
for line in data['results']:
for tag in line['locations']:
if tag['adminArea3'] != '':
states.append(tag['adminArea3'])
if tag['adminArea1'] != '':
countries.append(tag['adminArea1'])
i += 1
return states, countries
我昨晚没问题地跑了,甚至今天早上跑了70多次,直到直到大约20东西才开始疯狂。我不断收到403错误的getcode()网址检查,但找不到解决方法。我什至包括的全部原因是要检查403错误,然后跳过,如果可以,那之前是可行的。如果我没有记错的话,Mapquest API的速率限制为15,000个请求,我不应该减少一半。这可能是一个我不知道的简单修复,我只使用python几周了。任何建议将不胜感激。