【发布时间】:2021-12-11 15:05:12
【问题描述】:
我正在尝试从https://www.futhead.com/22/players/?page=1&level=gold_nif&bin_platform=ps 中抓取数据,以创建一个包含所有球员姓名及其统计数据(总体评分、位置、pac、sho、pas、dri、def、phy)的数据框,但是我的 rvest 无法检测到信息作为表格。
我试过了:
for(i in 1:10) {
page <- read_html(paste("https://www.futhead.com/22/players/?page=1&level=gold_nif&bin_platform=ps",sep=""))
}
StatsTable <- page %>%
html_table(fill=TRUE)
head(StatsTable)
这会导致打印出 list() 而不是表格。 如何编辑我的for循环以使read_html和html_table网站上的数据检测到数据,以便我可以使用播放器统计信息创建数据框?
我也尝试过这样的第一页:
first <- read_html("https://www.futhead.com/22/players/?page=1&level=gold_nif&bin_platform=ps",sep="")
first
tab <- first %>%
html_nodes(".padding-0") %>%
html_text()
tab
### Deletes spaces and \n
tab <- gsub(" ", "", tab)
tab <- gsub("\n", " ", tab)
tab
这样我从第一页获取了所有数据,但是所有信息都放入了字符中。也许是否可以从这些字符中提取名称和统计信息以使其成为数据框? 怎么可能呢?
【问题讨论】:
-
嗨。首先,我不明白你为什么要在 1:10 迭代 i 。据我了解,您有一个网址,因此您可以将其分配给页面对象。其次,我认为你不能用 rvest 刮掉它,因为它是 JS。您应该为此使用 Rselenium。
-
嗨 Bloxx,我正在尝试获取前 10 页的数据。因此我在 1:10 中使用了 i。所以实际上我想从多个页面中抓取数据(因为第 2 页有不同的 HTML 链接)。我该怎么做?
-
查看代码的第一部分,您错过了粘贴中的 i。它也没有像已经说过的那样做任何事情。
html_table不会帮助您,因为内容不在 table 标记内。不要使用 Selenium,httr + xml2 就足够了,但是你需要在解析所有元素上做一些工作。
标签: r web-scraping rvest