Python GeoIP2 AddressNotFoundError
Python GeoIP2 AddressNotFoundError
我正在尝试使用 Python GeoIP 通过 Maxmind 数据库将 IP 地址转换为地理详细信息。
import urllib2
import csv
import geoip2.database
db = geoip2.database.Reader("GeoLite2-City.mmdb")
target_url="http://myip/all.txt"
data = urllib2.urlopen(target_url)
for line in data:
response = db.city(line.strip())
print line.strip(), response.country.name, response.country.iso_code, response.location.longitude, response.location.latitude
我收到错误消息“geoip2.errors.AddressNotFoundError: 地址 103.229.234.197 不在数据库中。”
Traceback (most recent call last):
File "script.py", line 14, in <module>
response = db.city(line.strip())
File "/usr/lib/python2.7/site-packages/geoip2/database.py", line 110, in city
return self._model_for(geoip2.models.City, 'City', ip_address)
File "/usr/lib/python2.7/site-packages/geoip2/database.py", line 180, in _model_for
record = self._get(types, ip_address)
File "/usr/lib/python2.7/site-packages/geoip2/database.py", line 176, in _get
"The address %s is not in the database." % ip_address)
geoip2.errors.AddressNotFoundError: The address 103.229.234.197 is not in the database.
Maxmind db 提到的地址不在数据库中。然而它不会伤害我,但是如何忽略这个错误并获得我可用的输出?
尝试排除任何错误(虽然不是最好的方法)并期待特定的 AddressNotFoundError。
try:
print line.strip(), response.country.name, response.country.iso_code, response.location.longitude, response.location.latitude
except:
pass
另外,
try:
print line.strip(), response.country.name, response.country.iso_code, response.location.longitude, response.location.latitude
except AddressNotFoundError:
pass
仍然没有运气。
任何建议。
这里的问题是异常发生在 db.city 调用中,而不是值打印中,所以你可以试试这个:
import urllib2
import csv
import geoip2.database
db = geoip2.database.Reader("GeoLite2-City.mmdb")
target_url="http://myip/all.txt"
data = urllib2.urlopen(target_url)
for line in data:
try:
response = db.city(line.strip())
print line.strip(), response.country.name, response.country.iso_code, response.location.longitude, response.location.latitude
exception:
pass
我正在尝试使用 Python GeoIP 通过 Maxmind 数据库将 IP 地址转换为地理详细信息。
import urllib2
import csv
import geoip2.database
db = geoip2.database.Reader("GeoLite2-City.mmdb")
target_url="http://myip/all.txt"
data = urllib2.urlopen(target_url)
for line in data:
response = db.city(line.strip())
print line.strip(), response.country.name, response.country.iso_code, response.location.longitude, response.location.latitude
我收到错误消息“geoip2.errors.AddressNotFoundError: 地址 103.229.234.197 不在数据库中。”
Traceback (most recent call last):
File "script.py", line 14, in <module>
response = db.city(line.strip())
File "/usr/lib/python2.7/site-packages/geoip2/database.py", line 110, in city
return self._model_for(geoip2.models.City, 'City', ip_address)
File "/usr/lib/python2.7/site-packages/geoip2/database.py", line 180, in _model_for
record = self._get(types, ip_address)
File "/usr/lib/python2.7/site-packages/geoip2/database.py", line 176, in _get
"The address %s is not in the database." % ip_address)
geoip2.errors.AddressNotFoundError: The address 103.229.234.197 is not in the database.
Maxmind db 提到的地址不在数据库中。然而它不会伤害我,但是如何忽略这个错误并获得我可用的输出?
尝试排除任何错误(虽然不是最好的方法)并期待特定的 AddressNotFoundError。
try:
print line.strip(), response.country.name, response.country.iso_code, response.location.longitude, response.location.latitude
except:
pass
另外,
try:
print line.strip(), response.country.name, response.country.iso_code, response.location.longitude, response.location.latitude
except AddressNotFoundError:
pass
仍然没有运气。
任何建议。
这里的问题是异常发生在 db.city 调用中,而不是值打印中,所以你可以试试这个:
import urllib2
import csv
import geoip2.database
db = geoip2.database.Reader("GeoLite2-City.mmdb")
target_url="http://myip/all.txt"
data = urllib2.urlopen(target_url)
for line in data:
try:
response = db.city(line.strip())
print line.strip(), response.country.name, response.country.iso_code, response.location.longitude, response.location.latitude
exception:
pass