3

我正在尝试下载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,然后以我自己选择的名称保存它?

(对于无法提供该网站的链接,我深表歉意,但这是一个我不允许公开分享的专有网站。但是,我希望这个问题可能对更多人和更多网站有用)。

4

1 回答 1

1

您可以使用 R 操作下载文件夹中的文件。我将简单地列出这些文件:

L <- dir(".",pattern="*.pdf")

如果需要,您可以使用以下信息选择最后一个 PDF:

 file.info(L)

然后使用更改文件名

file.rename(identifiedName, meaningFullName)
于 2015-04-13T20:15:18.247 回答