Return to Snippet

Revision: 47935
at June 18, 2011 19:22 by ksaver


Initial Code
#!/usr/bin/env python
"""
    geoipy.py
    A simple IP geolocation python script.
    Uses geody.com geolocation web service.
    Requires BeautifulSoup library.

    Example:
    $ ./geoipy.py 198.117.0.122
    IP: 198.117.0.122 Location: MSFC, ALABAMA, \
    United States (National Aeronautics and Space Administration)
    
    ksaver, June 18, 2011.
    Public Domain Code.
"""

import re
import sys
from urllib import urlopen
from BeautifulSoup import BeautifulSoup as Soup

def main(ipaddr):
    """Geo-locates an IP address passed in argv[1]."""

    geody = "http://www.geody.com/geoip.php?ip=" + ipaddr
    html_page = urlopen(geody).read()
    soup = Soup(html_page)

    # Filter paragraph containing geolocation info.
    paragraph = soup('p')[3]

    # Remove html tags using regex.
    geo_txt = re.sub(r'<.*?>', '', str(paragraph))
    print geo_txt[32:].strip() + '\n'

if __name__ == "__main__":
    if len(sys.argv) > 1:
        main(sys.argv[1])
    else:
        main('127.0.0.1')

Initial URL


Initial Description


Initial Title
geoipy: A simple IP geolocation python script.

Initial Tags


Initial Language
Python