微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 rvest 从主页获取 hrefsSelectorGadget 和检查源代码

如何解决使用 rvest 从主页获取 hrefsSelectorGadget 和检查源代码

我正在使用 rvest 抓取网站 (here)。我正在尝试获取列出的所有 582 个人的 URL。例如,其中一个人的 URL 是 here

有一次,我在一个单独的 URL 中,我能够成功地抓取我正在寻找的信息。下面是一个例子:

link = "https://www.supercluster.com/astronauts/jessica-u.-meir?sort=&ascending=false&life%20form=human&"

page = read_html(link)

# Time in space and spacewalk time
page %>% html_nodes("span.pr015")

# Gender
page %>% html_nodes("a.under")

# Cross Karman Line
page %>% html_nodes("div.pt1.pb0.h5.caps.cw")

有关如何使用 rvest 从主页获取 582 个 URL 列表的任何建议?我尝试使用 SelectorGadget 并检查源代码 - 但无济于事。感谢您的帮助!

解决方法

因为这是使用 javascript 动态加载的,所以您必须考虑是否可以访问数据的来源。使用 Chrome/Firefox 中的网络检查器,您可以查看网站加载时加载的所有数据源。

从那里你可以看到所有宇航员的名单来自以下数据源:https://supercluster-iadb.s3.us-east-2.amazonaws.com/adb.json

同样,您可以看到可以使用 GET 请求从 https://www.supercluster.com/page-data/astronauts/vladimir-dzhanibekov/page-data.json 获取更多详细信息,以跳过当前脚本的“抓取”部分。这也使您的请求更快,并且使用的数据更少。但是您必须弄清楚这些链接,因为这是一个单独的问题。

library(dplyr)
library(rvest)
library(httr)
library(jsonlite)

list_astro <- httr::GET("https://supercluster-iadb.s3.us-east-2.amazonaws.com/adb.json")

list_astro <- rawToChar(list_astro$content)

list_astro_parsed <- jsonlite::fromJSON(list_astro)

create_links <- tibble(
  astronauts = list_astro_parsed$astronauts$name,slug = list_astro_parsed$astronauts$slug$current
) %>%
  mutate(
    page_link = paste0("https://www.supercluster.com/astronauts/",slug)
  )
create_links
# A tibble: 910 x 3
#   astronauts            slug                  link                                                         
#   <chr>                 <chr>                 <chr>                                                        
# 1 Yuri Gagarin          yuri-gagarin          https://www.supercluster.com/astronauts/yuri-gagarin         
# 2 Walter M. Schirra Jr. walter-m.-schirra-jr. https://www.supercluster.com/astronauts/walter-m.-schirra-jr.
# 3 Georgi Ivanov         georgi-ivanov         https://www.supercluster.com/astronauts/georgi-ivanov        
# 4 Leonid Popov          leonid-popov          https://www.supercluster.com/astronauts/leonid-popov         
# 5 Bertalan Farkas       bertalan-farkas       https://www.supercluster.com/astronauts/bertalan-farkas 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。