Как получить широту и долготу (значок карты) с веб-сайта, используя селен? - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь почистить сайт, чтобы найти широту и долготу этого места.Значок карты доступен на веб-сайте.Значок карты при нажатии перенаправляет на карту Justdial.Значок на веб-сайте имеет вид

enter image description here

Элемент проверки для значка карты:

<a title="Map for JICE Academy For Excellence Pvt Ltd, Vijayanagar" href="javascript:;" onclick="view_map('080PXX80.XX80.121102122047.B3M5', 'map', 'Bangalore');
                                                        _ct('map', 'dtpg');">
                                        <span class="ico-mapicn"></span>
                                        <span class="wrtrvtxt">Map</span>
</a>

Мне кажется, чтоview_map - это функция, а ее первый аргумент - координаты.Который я очистил, используя

url = "https://www.justdial.com/Bangalore/Race-Coaching-Institute-Pvt-Ltd-Hosur-Road/080PXX80-XX80-170420162628-Z6C1_BZDET?xid=QmFuZ2Fsb3JlIEJhbmsgRXhhbSBUdXRvcmlhbHM="
wd = webdriver.Chrome(chrome_path)
wd.get(url)
ele = wd.find_element_by_xpath('//a[@class="mapicn"]')
print(ele.get_attribute('onclick'))

Но я не могу понять, какой это формат.Есть ли какой-нибудь другой способ, которым я могу получить точный лат и журнал этого места.Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 11 декабря 2018

Широта и долгота недоступны на странице, чтобы получить ее, вы можете эмулировать почтовый запрос на https://..../functions/maps.php или перехватить запрос XMLHttpRequest

url = "https://......."
wd = webdriver.Chrome()
wd.get(url)
wd.execute_script('''
(function(open) {
    window.XMLHttpRequest.prototype.open = function() {
        this.addEventListener("readystatechange", function() {
            if(this.readyState == 4 && this.responseURL.indexOf('maps.php') > -1){
                window.latlong = this.responseText
            }
        }, false);
        open.apply(this, arguments);
    };
})(window.XMLHttpRequest.prototype.open);
''')

wd.find_element_by_xpath('//a[@class="mapicn"]').click()

latlong = wd.execute_async_script('var theData = arguments[0]; theData(latlong)')
print(latlong)
# {"lil":"12.889135400000","lon":"77.639586800000"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...