r - Web 数据抓取问题-自动下载
问题描述
我想从这个网站自动下载所有白皮书:https ://icobench.com/ico ,当你选择进入每个ICO的网页时,有一个白皮书标签可以点击,它会带你到pdf预览屏幕,我想要使用rvest从css脚本中检索pdf url,但在我尝试节点上的多个输入后没有任何返回
一个 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
但是什么都没有回来,有人可以帮忙吗?
从上面的例子中,我希望检索到 ico 官方网站的嵌入式 url 以获取 pdf 白皮书,例如:https ://www.ideafex.com/docs/IdeaFeX_twp_v1.1.pdf
但由于它是谷歌浏览器插件,它没有被 rvest 包检索,有什么想法吗?
解决方案
一个可能的解决方案:
使用您的示例,我将更改选择器以组合,使用后代组合器,id和属性 = 值选择器。这将按 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 url 的循环上调用该函数。
推荐阅读
- flutter - 如何删除或更改flutter_bootstrap列之间的空间
- amazon-web-services - 用户注册后请求的页面遇到错误
- azure-maps - 如何在天蓝色地图中更改不同国家的背景颜色
- mysql - 我的 nodeJS express 后端工作,然后突然崩溃
- c# - 如何在 C# 中深度克隆包含 DynamicObject 的类?
- azure - 为什么直到循环提前结束?
- c# - 如何使用 .NET 对构建进行签名?
- google-play-console - APK 需要有效的隐私政策您的应用正在上传用户的主要帐户信息
- monaco-editor - 如何在摩纳哥差异编辑器中隐藏/取消隐藏模型或面板
- vue.js - Vue.js 错误 8:3 错误解析错误:Unexpected keyword 'new'