在 iframe google 驱动器中获取元素(link)

Get element(link) inside iframe google drive

我正在尝试以编程方式下载此页面上的两个 zip 文件:

https://sites.google.com/site/ucinetsoftware/datasets/covert-networks/siren

这两个 zip 文件实际上位于不同的页面上,但是那些页面的 href 位于该页面内。所以,我想做的是:

  1. 获取两个 zip 文件所在页面的链接(它们在 public google 驱动器上)
  2. 将两个 zip 文件下载到我的电脑

(是的,我知道我可以手动下载它们,但是我需要从更多页面下载,所以我想自动化这个过程)

不幸的是,我什至无法迈出第一步。我首先将页面加载到 rvest,然后尝试获取元素 div.flip-entry-info,但这没有产生任何结果。我相信这是因为它是此页面内 iframe 的一部分。那么,如何访问包含指向这些文件实际位置的 href 的元素?

对于第二步,我需要想办法从 google 驱动器下载数据。

例如,这两个 zip 文件之一位于:https://drive.google.com/file/d/1BFN_1n-5EZ3rLrqrqWsAsBR9exjXuUKF/view

但我完全不知道从那里下载文件。 Chrome 中的 'inspect' 选项在此页面上不起作用,selectorgadget 也没有显示任何有用的信息。

谁能帮我通过 R 下载这些文件?我完全卡住了。

我们可以得到iframe

里面的链接

您可以参考这里的教程,

https://github.com/yusuzech/r-web-scraping-cheat-sheet/blob/master/README.md#rvest7.2

library(rvest)
library(magrittr)

link = 'https://sites.google.com/site/ucinetsoftware/datasets/covert-networks/siren' %>%
  read_html() %>%
  html_nodes("iframe") %>%  html_attr("src") 

#get links of both the files
link %>% read_html() %>% html_nodes(".flip-entry-info") %>%  html_nodes('a') %>% 
  html_attr('href')
[1] "https://drive.google.com/file/d/1cio3RzjDO6e78PKdEFSPgdw4tCJ7_VUi/view?usp=drive_web"
[2] "https://drive.google.com/file/d/1BFN_1n-5EZ3rLrqrqWsAsBR9exjXuUKF/view?usp=drive_web"

要下载文件,我们可以使用 googledrive 库。

library(googledrive)
temp <- tempfile(fileext = ".zip")
drive_download(
  as_id("https://drive.google.com/file/d/1cio3RzjDO6e78PKdEFSPgdw4tCJ7_VUi/view?usp=drive_web"), path = temp, overwrite = TRUE)
out<- unzip(temp, exdir = tempdir())
df<- read.csv(out, sep = ",")
str(df)
'data.frame':   44 obs. of  45 variables:
 $ ï..: int  1 2 3 4 5 6 7 8 9 10 ...
 $ X1 : int  0 1 1 1 1 1 1 1 1 1 ...
 $ X2 : int  1 0 0 0 0 0 0 0 0 0 ...
 $ X3 : int  1 0 0 0 0 1 0 0 0 0 ...