使用getcode()的HTTP 403错误

时间:2018-07-20 16:46:22

标签: python url

所以我正在构建一个脚本,以便从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几周了。任何建议将不胜感激。

0 个答案:

没有答案