gpt4 book ai didi

Rvest:抓取多个 URL

转载 作者:行者123 更新时间:2023-12-04 13:59:58 28 4
gpt4 key购买 nike

我正在尝试通过 URL 列表循环抓取一些 IMDB 数据。不幸的是,我的输出并不完全是我所希望的,更不用说将它存储在数据帧中了。

我得到的网址是

library(rvest)
topmovies <- read_html("http://www.imdb.com/chart/top")
links <- top250 %>%
html_nodes(".titleColumn") %>%
html_nodes("a") %>%
html_attr("href")
links_full <- paste("http://imdb.com",links,sep="")
links_full_test <- links_full[1:10]

然后我就可以满足了
lapply(links_full_test, . %>% read_html() %>% html_nodes("h1") %>% html_text())

但它是一个嵌套列表,我不知道如何将它放入 R 中正确的 data.frame 中。同样,如果我想获得另一个属性,请说
%>% read_html() %>% html_nodes("strong span") %>% html_text()

要检索 IMDB 评级,我得到了相同的嵌套列表输出,最重要的是我必须执行 read_html() 两次......这需要很多时间。有一个更好的方法吗?我猜是 for 循环,但我无法让它以这种方式工作 :(

最佳答案

这是使用 purrr 和 rvest 的一种方法。关键思想是保存解析的页面,然后提取您感兴趣的位。

library(rvest)
library(purrr)

topmovies <- read_html("http://www.imdb.com/chart/top")
links <- topmovies %>%
html_nodes(".titleColumn") %>%
html_nodes("a") %>%
html_attr("href") %>%
xml2::url_absolute("http://imdb.com") %>%
.[1:5] # for testing

pages <- links %>% map(read_html)

title <- pages %>%
map_chr(. %>%
html_nodes("h1") %>%
html_text()
)
rating <- pages %>%
map_dbl(. %>%
html_nodes("strong span") %>%
html_text() %>%
as.numeric()
)

关于Rvest:抓取多个 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36922087/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com