在 iframe google 驱动器中获取元素(link)
Get element(link) inside iframe google drive
我正在尝试以编程方式下载此页面上的两个 zip 文件:
https://sites.google.com/site/ucinetsoftware/datasets/covert-networks/siren
这两个 zip 文件实际上位于不同的页面上,但是那些页面的 href
位于该页面内。所以,我想做的是:
- 获取两个 zip 文件所在页面的链接(它们在 public google 驱动器上)
- 将两个 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 ...
我正在尝试以编程方式下载此页面上的两个 zip 文件:
https://sites.google.com/site/ucinetsoftware/datasets/covert-networks/siren
这两个 zip 文件实际上位于不同的页面上,但是那些页面的 href
位于该页面内。所以,我想做的是:
- 获取两个 zip 文件所在页面的链接(它们在 public google 驱动器上)
- 将两个 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 ...