Web数据废弃问题-自动下载

时间:2019-07-11 02:57:23

标签: r web-scraping css-selectors rvest

我想从以下网站自动下载所有白皮书:https://icobench.com/ico,当您选择进入每个ICO的网页时,有一个白皮书选项卡可单击,它将带您进入pdf预览屏幕,我想通过使用rvest从css脚本中检索pdf网址,但是在节点上尝试多次输入后没有任何反应

一个ico的CSS检查示例:

embed id="plugin" type="application/x-google-chrome-pdf" 
src="https://www.ideafex.com/docs/IdeaFeX_twp_v1.1.pdf" 
stream-url="chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/9ca6571a-509f-4924-83ef-5ac83e431a37" 
headers="content-length: 2629762
content-type: application/pdf

我尝试了以下操作:

library(rvest)
url <- "https://icobench.com/ico"
url <- str_c(url, '/hygh')
webpage <- read_html(url)
Item_html <- html_nodes(webpage, "content embed#plugin")
Item <- html_attr(Item_html, "src")

Item <- html_text(Item_html)
Item

但是什么也没回来,有人可以帮忙吗?

从上面的示例中,我期望将url嵌入ico的官方网站以获取pdf白皮书,例如:https://www.ideafex.com/docs/IdeaFeX_twp_v1.1.pdf

但是,由于它是Google chrome插件,rvest软件包没有检索到它,有什么主意吗?

1 个答案:

答案 0 :(得分:0)

可能的解决方案:

使用您的示例,我将使用descendant combinatoridattribute = value选择器来更改选择器以进行组合。这将通过id定位白皮书标签,并通过href属性值定位子链接;使用$以运算符结尾获取pdf。

library(rvest)
library(magrittr)

url <- "https://icobench.com/ico/hygh"
pdf_link <- read_html(url) %>% html_node(., "#whitepaper [href$=pdf]") %>% html_attr(., "href")

更快的选择?

您还可以定位object标签及其data属性

pdf_link <- read_html(url) %>% html_node(., "#whitepaper object") %>% html_attr(., "data")

探索适合不同页面的目的。

后者可能更快,并且似乎可以在我检查过的几个网站中使用。


所有icos的解决方案:

您可以将其放在一个函数中,该函数接收一个URL作为输入(每个ico的URL);如果找不到url / css选择器不匹配,该函数将返回pdf url或其他一些指定值。您需要为该场景添加一些处理。然后在所有ico网址的循环中调用该函数。