【问题标题】:extract the location coordinates of a web page提取网页的位置坐标
【发布时间】:2019-07-22 21:49:42
【问题描述】:

我想在网页上提取每个待售房屋的坐标,但我无法获得。 页面如下:

https://www.fincaraiz.com.co/casa-en-venta/cali/valle_del_lili-det-4710841.aspx#pnlMap



 require(rvest)

    pageurl <- "https://www.fincaraiz.com.co/casa-en-venta/cali/valle_del_lili-det-4710841.aspx"

    htmlpage <- read_html(pageurl)



    htmlpage %>%
      html_nodes(
##I can't think of how to continue

我希望通过 HTML 获得房子的坐标。

【问题讨论】:

  • 欢迎来到 StackOverflow!请检查页面的源代码,DivGoogleMaps 为空。有一个脚本包含var sfAdvert 以及所有信息(包括坐标)和两个变量MapFR.latitudeMapFR.longitude。试着抓住那些。
  • 还要检查你的代码的来源......我不认为"//*[@id="DivGoogleMaps"]" 是一个有效的字符串,对我来说它抱怨Error: unexpected symbol in ""//*[@id="DivGoogleMaps"。 (双引号太多。)你能让你的代码在没有那个错误的情况下执行吗?如果没有,请分享您的实际代码。也许您可以尝试用'//*[@id="DivGoogleMaps"]' 替换它(以及下一个字符串)(注意外面的单引号)。 (我不知道,... %&gt;% [str_detect(...)] 带方括号是否合法?)
  • 我认为代码不起作用,我对此很陌生,我想不出另一种获取字符串的方法。你还有什么建议得到它?我只想得到卡在地图上的房子的字符串。先谢谢各位朋友

标签: r web-scraping rvest


【解决方案1】:

如 cmets 中所述,您可以在其中一个脚本标签中使用 javascript 字典进行正则表达式并使用 json 解析器进行解析以获取这些值。如果您想了解有关列表的其他信息,我会选择较大的对象。

library(rvest)
library(stringr)
library(magrittr)
library(jsonlite)

r <- read_html('https://www.fincaraiz.com.co/casa-en-venta/cali/valle_del_lili-det-4710841.aspx#pnlMap') %>%
  html_node('body') %>%
  html_text() %>%
  toString()
data <- str_match_all(r,'var sfAdvert = (.*?);')
data <- data.frame(jsonlite::fromJSON(data[[1]][,2]))

print(data$Latitude)
print(data$Longitude)

【讨论】:

  • 页面的url发生变化时报错,这是什么原因造成的?这是新网址:fincaraiz.com.co/trece-lunas/cali/…
  • 您提供的代码有效,但我将页面的 URL 更改为 fincaraiz.com.co/trece-lunas/cali/… 时出错
  • 你检查过新页面的html是否有var sfAdvert?
  • 我不知道该怎么做。你能帮帮我吗?
  • F12 打开网页上的开发工具(例如使用 Chrome)。选择元素选项卡。单击元素选项卡中的任何内容 > 按 Ctrl + F > 在搜索框中输入 var sfAdvert > 按 Enter > 查看是否有任何结果。
猜你喜欢
  • 2021-01-31
  • 1970-01-01
  • 2012-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多