我正在尝试从以下链接中抓取滚动表:http : //proximityone.com/cd114_2013_2014.htm
我正在使用 rvest,但无法为表格找到正确的 xpath。我目前的代码如下:
url <- "http://proximityone.com/cd114_2013_2014.htm"
table <- gis_data_html %>%
html_node(xpath = '//span') %>%
html_table()
Run Code Online (Sandbox Code Playgroud)
目前我收到错误“没有适用于 'html_table' 的方法应用于类“xml_missing”的对象”
任何人都知道我需要更改什么才能抓取链接中的交互式表格?
因此,您面临的问题是rvest将读取页面的源代码,但不会在页面上执行 javascript。当我检查交互式表时,我看到
<textarea id="aw52-box-focus" class="aw-control-focus " tabindex="0"
onbeforedeactivate="AW(this,event)" onselectstart="AW(this,event)"
onbeforecopy="AW(this,event)" oncut="AW(this,event)" oncopy="AW(this,event)"
onpaste="AW(this,event)" style="z-index: 1; width: 100%; height: 100%;">
</textarea>
Run Code Online (Sandbox Code Playgroud)
但是当我查看页面源代码时,“aw52-box-focus”不存在。这是因为它是在页面通过 javascript 加载时创建的。
你有几个选择来处理这个问题。“简单”的是使用RSelenium实际浏览器加载页面,然后在加载后获取元素。另一个选项是通读 javascript 并查看它从哪里获取数据,然后利用它而不是抓取表格。
更新
事实证明,阅读 javascript 真的很容易——它只是加载一个 CSV 文件。地址为纯文本,http://proximityone.com/countytrends/cd114_acs2014utf8_hl.csv
该.csv没有列标题,但这些都是在<script>和
var columns = [
"FirstNnme",
"LastName",
"Party",
"Feature",
"St",
"CD",
"State<br>CD",
"State<br>CD",
"Population<br>2013",
"Population<br>2014",
"PopCh<br>2013-14",
"%PopCh<br>2013-14",
"MHI<br>2013",
"MHI<br>2014",
"MHI<br>Change<br>2013-14",
"%MHI<br>Change<br>2013-14",
"MFI<br>2013",
"MFI<br>2014",
"MFI<br>Change<br>2013-14",
"%MFI<br>Change<br>2013-14",
"MHV<br>2013",
"MHV<br>2014",
"MHV<br>Change<br>2013-14",
"%MHV<br>Change<br>2013-14",
]
Run Code Online (Sandbox Code Playgroud)
程序化解决方案
您也可以通过编程方式尝试此操作,而不是深入研究 javacript(如果您想要此网站上有几个这样的页面)。我们阅读页面,获取<script>注释,获取“文本”(脚本本身)并查找对 csv 文件的引用。然后我们展开相对 URL 并将其读入。这对列名没有帮助,但也不应该太难提取。
library(rvest)
page = read_html("http://proximityone.com/cd114_2013_2014.htm")
scripts = page %>%
html_nodes("script") %>%
html_text() %>%
grep("\\.csv",.,value=T)
relCSV = stringr::str_extract(scripts,"\\.\\./.*?csv")
fullCSV = gsub("\\.\\.","http://proximityone.com",relCSV)
data = read.csv(fullCSV,header = FALSE)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1510 次 |
| 最近记录: |