Get Started With IP2Location Python Module
Dependencies
This library requires IP2Location BIN database to function. You may download the BIN database at
IP2Location LITE BIN Data (Free): https://lite.ip2location.com
IP2Location Commercial BIN Data (Comprehensive): https://www.ip2location.com
Note
An outdated BIN database was provided in the databases folder for your testing. You are recommended to visit the above links to download the latest BIN database.
Requirements
Python 3.5 and above.
Installation
Manual Installation
Unzip the package.
Execute python setup.py build
Execute python setup.py install
Installation using PyPI.
pip install IP2Location
Installation in Arch Linux
For Arch Linux user, you can install the module using the following command:
git clone https://aur.archlinux.org/ip2location-python.git && cd ip2location-io-python
makepkg -si
Sample Codes
Query geolocation information from BIN database
You can query the geolocation information from the IP2Location BIN database as below:
import os
import IP2Location
"""
Cache the database into memory to accelerate lookup speed.
WARNING: Please make sure your system have sufficient RAM to use this feature.
"""
# database = IP2Location.IP2Location(os.path.join("data", "IPV6-COUNTRY.BIN"), "SHARED_MEMORY")
# Default file I/O lookup
database = IP2Location.IP2Location(os.path.join("data", "IPV6-COUNTRY.BIN"))
rec = database.get_all("19.5.10.1")
print("Country Code : " + rec.country_short)
print("Country Name : " + rec.country_long)
print("Region Name : " + rec.region)
print("City Name : " + rec.city)
print("ISP Name : " + rec.isp)
print("Latitude : " + rec.latitude)
print("Longitude : " + rec.longitude)
print("Domain Name : " + rec.domain)
print("ZIP Code : " + rec.zipcode)
print("Time Zone : " + rec.timezone)
print("Net Speed : " + rec.netspeed)
print("Area Code : " + rec.idd_code)
print("IDD Code : " + rec.area_code)
print("Weather Station Code : " + rec.weather_code)
print("Weather Station Name : " + rec.weather_name)
print("MCC : " + rec.mcc)
print("MNC : " + rec.mnc)
print("Mobile Carrier : " + rec.mobile_brand)
print("Elevation : " + rec.elevation)
print("Usage Type : " + rec.usage_type)
print("Address Type : " + rec.address_type)
print("Category : " + rec.category)
print("District : " + rec.district)
print("ASN : " + rec.asn)
print("AS : " + rec.as_name)
print("\nYou may download the DB26 sample BIN at http://www.ip2location.com/downloads/sample6.bin.db26.zip for full data display.")
Processing IP address using IP Tools class
You can manupulate IP address, IP number and CIDR as below:
import IP2Location
ipTools = IP2Location.IP2LocationIPTools()
print(str(ipTools.is_ipv4("8.8.8.8")))
print(str(ipTools.is_ipv6("2001:4860:4860::8888")))
print(ipTools.ipv4_to_decimal("8.8.8.8"))
print(ipTools.decimal_to_ipv4(134744072))
print(ipTools.ipv6_to_decimal("2001:4860:4860::8888"))
print(ipTools.decimal_to_ipv6(42541956123769884636017138956568135816))
print(ipTools.ipv4_to_cidr("8.0.0.0", "8.255.255.255"))
print(ipTools.cidr_to_ipv4("8.0.0.0/8"))
print(ipTools.ipv6_to_cidr("2002:0000:0000:1234:abcd:ffff:c0a8:0000", "2002:0000:0000:1234:ffff:ffff:ffff:ffff"))
print(ipTools.cidr_to_ipv6("2002::1234:abcd:ffff:c0a8:101/64"))
print(ipTools.compressed_ipv6("2002:0000:0000:1234:FFFF:FFFF:FFFF:FFFF"))
print(ipTools.expand_ipv6("2002::1234:FFFF:FFFF:FFFF:FFFF"))
List down country information
You can query country information for a country from IP2Location Country Information CSV file as below:
import os
import IP2Location
# List country information
country = IP2Location.Country(os.path.join("data", "IP2LOCATION-COUNTRY-INFORMATION-BASIC.CSV"))
print(country.get_country_info("US"))
List down region information
You can get the region code by country code and region name from IP2Location ISO 3166-2 Subdivision Code CSV file as below:
import os
import IP2Location
# Get region code by country code and region
region = IP2Location.Region(os.path.join("data", "IP2LOCATION-ISO3166-2.CSV")
print(region.get_region_code("US", "California"))