我正在尝试下载pdf文件如下:(由于这是一个商业网站,我不得不替换下面的url、用户名和密码)
## login to the site first
library(RSelenium)
RSelenium::checkForServer()
RSelenium::startServer(log = TRUE, invisible = FALSE)
remDr <- remoteDriver(browserName = "chrome")
remDr$open()
remDr$setImplicitWaitTimeout(3000)
remDr$navigate(url) # the url of the login page
remDr$findElement("id", "LoginForm_username")$sendKeysToElement(list("user"))
remDr$findElement("id", "LoginForm_password")$sendKeysToElement(list("pass"))
remDr$findElement("name", "start")$clickElement() ## this is the login button
这是一个包含公司互动数据的网站。了解了 api,我已经弄清楚了我感兴趣的每个报告的页面名称。页面上有一个“下载 pdf”按钮。当我单击此按钮时,该站点会动态生成 pdf 格式的报告并返回报告(具有随机名称,例如“97da08491e3e41447f591c2b668c0602.pdf”。我认为它为此使用 wkhtml2pdf。我使用以下代码单击该按钮:
# pp is the name of a link for a given report
remDr$navigate(pp)
Sys.sleep(7) # wait for the page to load
remDr$findElement("id", "download-pdf")$clickElement()
当点击“下载pdf”按钮时,该文档由站点生成,然后由Chrome保存。(随机名称每次都不同,我无法使用类似的东西download.file()
来获取它)这很好,除了文档是用这个随机名称保存的。相反,我想捕获网站返回的 pdf,然后使用更具信息性的名称保存它(我必须这样做数百次,所以我不想手动按顺序浏览所有 pdf查找有关特定公司的报告)。
所以,我的问题是:如何捕获由站点动态生成和返回的 pdf,然后以我自己选择的名称保存它?
(对于无法提供该网站的链接,我深表歉意,但这是一个我不允许公开分享的专有网站。但是,我希望这个问题可能对更多人和更多网站有用)。