python 使用反向地理编码获取Magicbricks.com上的属性地址

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 使用反向地理编码获取Magicbricks.com上的属性地址相关的知识,希望对你有一定的参考价值。

"""
Project: Apartment Hunt

Get Address of properties on Magicbricks.com using Reverse-Geocoding

This script asks for the target property URL, reverse geocodes it 
and prints the address of the property

Need: Magicbricks map functionality doesn't let users get directions. 
Even the exact property address is not visible on the webpage.

"""

import re

import requests
from bs4 import BeautifulSoup
from geopy.geocoders import GoogleV3

# URL = ("http://www.magicbricks.com/propertyDetails/Paying-Guest-FOR-Rent-Saket-in-New-Delhi" + 
#        "&id=4d423139323339393233?from=search")

URL = raw_input("Enter Magicbricks Property URL: ")

def make_request(link):
    r = requests.get(link)
    soup = BeautifulSoup(r.text)
    return soup

def get_coords(soup):
    see_on_map_span = soup.find("span", {"class": "seeProOnMap"})
    temp_coords_list = see_on_map_span.a['onclick'].split('=')
    lat = temp_coords_list[2].split('&')[0]
    lng = temp_coords_list[3].split('&')[0]
    return lat, lng

def reverse_geocode(lat, lng):
    geolocator = GoogleV3()
    coords = ', '.join([lat, lng])
    location = geolocator.reverse(coords)
    return location

def main():
    soup = make_request(URL)
    lat, lng = get_coords(soup)
    location = reverse_geocode(lat, lng)
    print "\nAddress = ", location[0].address + "\n"

if __name__ == "__main__":
    main()

以上是关于python 使用反向地理编码获取Magicbricks.com上的属性地址的主要内容,如果未能解决你的问题,请参考以下文章