Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.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
将Javascript呈现的网页内容读入R_Javascript_R_Web Scraping - Fatal编程技术网

将Javascript呈现的网页内容读入R

将Javascript呈现的网页内容读入R,javascript,r,web-scraping,Javascript,R,Web Scraping,我正在尝试将以下网页的内容(如浏览器的Inspect Element工具所示)读入R: 由于内容显然是Javascript呈现的,因此不可能使用常见的web抓取功能(如read_html)从xml2包中检索内容。我遇到过以下帖子,建议使用rvest和V8软件包,但我无法让它解决我的问题: 我也看到过关于堆栈溢出的类似问题(如和),但这些问题的答案(隐藏的api解决方案和网络选项卡中的请求URL)对我来说并不适用 首先,我感兴趣的是读取列表中人员的公共ID(div.user-昵称节点)。我的猜

我正在尝试将以下网页的内容(如浏览器的Inspect Element工具所示)读入R:

由于内容显然是Javascript呈现的,因此不可能使用常见的web抓取功能(如
read_html
)从
xml2
包中检索内容。我遇到过以下帖子,建议使用
rvest
V8
软件包,但我无法让它解决我的问题:

我也看到过关于堆栈溢出的类似问题(如和),但这些问题的答案(隐藏的api解决方案和网络选项卡中的请求URL)对我来说并不适用

首先,我感兴趣的是读取列表中人员的公共ID(div.user-昵称节点)。我的猜测是,要么我指定的节点不正确,要么网站根本不允许抓取网页


任何帮助都将不胜感激。

数据来自返回json的API调用。您可以发出相同的GET请求,然后提取用户名。Swop
x$UserName
与ID的
x$CustomerId

library(jsonlite)

data <- jsonlite::read_json('https://www.etoro.com/sapi/rankings/rankings/?activeweeksmin=24&blocked=false&bonusonly=false&copiersmax=5000&copyblock=false&copyinvestmentpctmax=0&copytradespctmax=0&dailyddmin=-10&displayfullname=true&gainmax=100&gainmin=5&hasavatar=true&highleveragepctmax=10&isfund=false&istestaccount=false&lastactivitymax=14&longpospctmax=80&lowleveragepctmin=50&maxdailyriskscoremax=5&maxmonthlyriskscoremax=5&maxmonthlyriskscoremin=1&optin=true&page=1&pagesize=20&period=OneYearAgo&profitableweekspctmin=50&sort=-gain&tradesmin=20&verified=true&weeklyddmin=-20&winratiomax=85')

users <- lapply(data$Items, function(x) {x$UserName})
library(jsonlite)

在查看提供的链接时,我没有看到该类的数据。您能否从要检索的页面中给出一个示例id?@QHarr非常感谢您的回复。例如,列表中第二个人的ID是“brandnew300”。非常感谢!当我将您提供的json复制粘贴到我的浏览器中时,我可以看到它的内容,但无法在R中读取。当我运行代码的第二行时,我收到以下错误消息:错误在open.connection(con,“rb”):无法打开连接另外:警告消息:在open.connection(con,“rb”):无法打开URL“”[…]“:HTTP状态为“403禁止”如何解决此问题?我的第二个问题是,您是如何从原始URL获得这个新URL(json URL)的?我真的很抱歉,我在网页抓取方面太缺乏经验了。在网页上按F12打开开发工具,转到网络选项卡,按F5观看网页流量显示为页面更新。通过web流量(在xhr上过滤)查找以
开头的请求https://www.etoro.com/sapi/rankings/rankings/?activeweeksmin
太好了,明白了。我真是太感谢你了!对不起,我还有一个问题。我为给定的人员列表检索的每个json似乎只包含20项(而不是列表上的所有人员)。例如,您提供的json包含20人,而原始列表(在我的原始URL中)包含30人。我在另一个列表(2207人)上尝试了您的解决方案,得到了76个json,每个json包含20人(我向下滚动以加载整个人员列表,然后从开发工具中提取json URL)。是否有一种方法可以检索列表中所有人的姓名(1个json或多个json)?检查url中的参数。是否有限制和/或分页?