В настоящее время я пытаюсь очистить данные широты / долготы из списка URL-адресов, которые у меня есть, используя rvest. Каждый URL-адрес имеет встроенную карту Google с определенным местоположением, но сами URL-адреса не показывают путь, по которому идет API.
Глядя на исходный код страницы, я вижу, что та часть, которую я ищу, находится здесь:
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false">
</script>
<script type="text/javascript">
function initialize() {
var myLatlng = new google.maps.LatLng(43.805170,-70.722084);
var myOptions = {
zoom: 16,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.SATELLITE
}
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title:"F.E. Wood & Sons - Natural Energy"
});
Теперь, если я могу просто получить строку с вводом LatLng (....), я могу использовать некоторые операции синтаксического анализа строк, чтобы получить значения широты и долготы для всех URL-адресов.
Я написал следующий код, чтобы получить свои данные:
require(rvest)
require(magrittr)
fetchLatLong<-function(url){
url<-as.character(url)
solNum<-html(url)%>%
html_nodes("#map_canvas")%>%
html_attr("script")
}
(селектор «map_canvas» был найден с помощью selectorGadget; вы можете просмотреть весь исходный текст здесь).
У меня худшее время, чтобы прочитать то, что мне нужно. Я пробовал много узлов и комбинаций узлов, но безрезультатно. Я играл с phantom.js, но проблема в том, что это не js-рендеринг html-контент, который мне нужен: я ищу ввод запроса API, который записан в код страницы (или, по крайней мере, на мой любительский глаз кажется).
Есть ли у кого-нибудь совет?