【发布时间】:2015-08-23 15:02:20
【问题描述】:
我目前正在尝试从使用 rvest 的 url 列表中抓取纬度/经度数据。每个 URL 都有一个带有特定位置的嵌入式谷歌地图,但 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 找到的;您可以查看整个源代码here)。
我在阅读我所追求的内容时遇到了最糟糕的情况。我尝试了许多节点和节点组合,但无济于事。我玩过 phantom.js,但问题是它不是我所追求的 js 渲染的 html 内容:我正在寻找 API 查询输入,它被写入页面代码(或者,至少,在我的业余爱好者看来是)。
有人有什么建议吗?
【问题讨论】:
标签: javascript r web-scraping scraper rvest