【问题标题】:How to extract data from html into R如何将html中的数据提取到R中
【发布时间】:2016-01-19 03:57:42
【问题描述】:

我有一个包含table 的链接。我尝试的第一件事是查找是否有任何按钮可以点击,不幸的是没有。然后我尝试在R中使用一个名为XML的包来获取不同节点之间的数据,自己构建一个数据框。

为了做到这一点,我需要知道我想提取哪个节点(或 HTML 标记)。于是我在网页浏览器上右击,找到包含我想要的表的标签。

<fieldset id="result" 开始表格的内容。我们也可以从浏览器中看到表格的第一行是<li class="vesselResultEntry removeBackground">

然后,当我尝试使用 R 下载此 HTML 时,我发现与表格相关的整个 <li> 标签都消失了,取而代之的是 <li class="toRemove"/>。顺便说一下,下面是我的 R 代码:

library(XML)
url <- "http://www.fao.org/figis/vrmf/finder/search/#stats"
webpage <- readLines(url)
htmlpage <- htmlParse(webpage, asText = TRUE)
data <- xpathSApply(htmlpage, "//ul[@id='searchResultsContainer']")
data

# <ul id="searchResultsContainer" class="clean resultsContainer"><li class="toRemove"></li></ul> 

我试图在代码中做的只是看看我是否可以获取特定标签中的内容。显然我要获取的行不在我保存的对象 (webpage) 中。

所以我的问题是:

有没有办法以任何方式下载我想要的表格(最好在 R 中)?

本网站是否有某种保护措施阻止我将整个 HTML 下载为文本文件并获取数据?

非常感谢任何建议

【问题讨论】:

  • @Ouroborus 他正在使用不同的库。
  • 研究使用 xPath,这是一种查询 XML 结构的与语言无关的方法。顺便说一句,你从来没有告诉我们你到底想要什么。
  • 我实际上是在尝试下载您在该链接中看到的整个表格内容。如果它不可下载,我想通过指定标签名称来获取数据。但是现在似乎当我将 html 保存为文本文件时,包含该表的每一行的标签都消失了。
  • @Ouroborus,感谢您提供的示例,但我在此处提供的链接不是共享的 csv 文件链接。它只是网页的链接。我不确定它是否有效。

标签: html xml r


【解决方案1】:

您尝试获取的页面是在加载时在浏览器端动态组装的。直接获取 url 得到的内容不包含查看 DOM 时看到的数据。该数据稍后会从单独的 URL 加载。

我看了一下,有问题的网址是:

http://www.fao.org/figis/vrmf/finder/services/public/vessels/search?c=true&gd=true&nof=false&not=false&nol=false&ps=30&o=0&user=NOT_SET

我不确定大部分查询字符串是什么,但很明显ps 是“页面大小”,o 是“偏移量”。页面大小似乎上限为 200,超过此上限则强制为 30。URL 返回 JSON,因此您需要一些方法来解析它。响应中嵌入的数据表明有 231047 个条目,因此您必须发出多个请求才能全部获取。

数据提供者通常不喜欢人们这样抓取他们的数据。您可能想四处寻找可下载的版本。

【讨论】:

  • 谢谢@Ouroborus。很高兴知道有这样一种方式可以查看本网站上的数据。但我想我会停止探索。 231047 太大了。
猜你喜欢
  • 2020-01-21
  • 1970-01-01
  • 2019-08-22
  • 1970-01-01
  • 1970-01-01
  • 2019-07-22
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多