Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
rvest:提取动态加载的html表_R_Web Scraping_Rvest - Fatal编程技术网

rvest:提取动态加载的html表

rvest:提取动态加载的html表,r,web-scraping,rvest,R,Web Scraping,Rvest,我试图提取一个html表并将其转换为R中的data.frame或data.table 我想提取包含比特币历史数据的表: (完整Xpath:/html/body/div/div[1]/div[2]/div[1]/div[2]/div[3]/div/ul[2]/li[5]/div/div/div[2]/div[3]/div/table) 这就是我迄今为止所尝试的: 库(magrittr) 图书馆(rvest) URL你说得对-此表在加载页面后由XHR调用动态加载,因此使用rvest无法获取它。也

我试图提取一个html表并将其转换为R中的data.frame或data.table

我想提取包含比特币历史数据的表:

(完整Xpath:
/html/body/div/div[1]/div[2]/div[1]/div[2]/div[3]/div/ul[2]/li[5]/div/div/div[2]/div[3]/div/table

这就是我迄今为止所尝试的:

库(magrittr)
图书馆(rvest)

URL你说得对-此表在加载页面后由XHR调用动态加载,因此使用
rvest
无法获取它。也许最好的解决方案是找到生成表的API的地址。您可以使用浏览器中的开发人员工具执行此操作。然后需要解析json,这可能很棘手。例如,在您的情况下,我们可以执行以下操作:


url根据@AllanCameron的建议,我们可以使用
Rselenium
rvest
提取表格。下面是一个对我有用的脚本:

库(RSelenium)
图书馆(rvest)
图书馆(magrittr)

谢谢你的建议。是否有其他方法可以为
rvest
调用添加某种延迟,以便在提取信息之前加载表?我的整个脚本都是基于该表的,因此如果我能够提取该表,就更容易了。@mat rvest所做的就是请求页面并解析返回的html。rvest和浏览器之间的区别在于,浏览器有一个内置的JavaScript引擎,可以运行JavaScript代码。此JavaScript代码的一部分是向服务器发送另一个请求(Ajax调用),返回json。JavaScript引擎然后解析json以构建表。这是一个非常活跃和复杂的过程,需要浏览器花费一些时间,这就是为什么需要在浏览器中等待表格。您可以随意等待,rvest不会为您创建动态网页进行刮取。@mat如果您需要刮取动态网页,您有两个选择:生成json请求并自己解析(如我在回答中所示),或者使用R通过RSelenium控制web浏览器。如果你对JavaScript或html知之甚少,那么这两种语言都很难掌握——尽管我从你的个人资料中看到你知道一些JavaScripts,谢谢你提供的所有信息。我快速浏览了一下api,发现历史数据无法通过免费计划()获得。我将试用
Rselenium