2016-04-24 8 views
0
from urllib2 import urlopen 
from contextlib import closing 
import json 
import time 
import os 

while True: 
    url = 'http://freegeoip.net/json/' 
    try: 
     with closing(urlopen(url)) as response: 
      location = json.loads(response.read()) 
      location_city = location['city'] 
      location_state = location['region_name'] 
      location_country = location['country_name'] 
      #print(location_country) 
      if location_country == "Germany": 
       print("You are now surfing from: " + location_country) 
       os.system(r'firefox /home/user/Documents/alert.html') 
        except: 
     print("Could not find location, searching again...") 
    time.sleep(1) 

Её не ответили ни на одну страну. Я могу получить помощь, чтобы решить эту проблему?Python geoip поиск по стране json

+0

Ваш зачет имеет неправильный отступ. Он должен быть indentet с 4 пробелами только – tobspr

ответ

0

Помимо неправильного отступа, ваш код выглядит отлично.

Проблема заключается в том, что сама страница не отвечает. Если вы попытаетесь открыть его в браузере, например, соединение будет отклонено.

Возможно, api либо перегружен, либо больше не существует.

+0

tnx, вы знаете любой другой подобный сервис? – Stevie

0

С одной стороны, сервер выглядит down.

Возможно, вы заметили это, но голый except скрывает факт. В общем, вы не должны поймать все исключения, но они должны поймать тех, которые вы ожидаете, - в этом случае urllib2.URLError исключение представляется целесообразным:

import urllib2 

url = 'http://freegeoip.net/json/' 
try: 
    response = urllib2.urlopen(url) 
    ... 
except urllib2.URLError as exc: 
    print('Could not find location due to exception: {}'.format(exc)) 

Если вы запустите код выше вы можете увидеть этот вывод:

Could not find location due to exception: <urlopen error [Errno 101] Network is unreachable> 

Возможно, сервер был раньше, и проблема может иметь другую причину, например json.loads() может быть неисправен. Если вы измените обработчик исключений, как показано выше, вы сможете увидеть, где он сбой.

 Смежные вопросы

  • Нет связанных вопросов^_^