如何捕获站点生成的文档(使用 R)

How to catch a document that is generated by a site (using R)

我正在尝试按以下方式下载 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,我已经找出我感兴趣的每个报告的页面名称。页面上有一个 "download pdf" 按钮。当我单击此按钮时,该站点会动态生成 pdf 格式的报告和 returns 报告(具有随机名称,如“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()

单击 "download pdf" 按钮时,文档由站点生成,然后由 Chrome 保存。 (随机名称每次都不同,我无法使用 download.file() 之类的东西来获取它)这很好用,除了文档是用这个随机名称保存的。相反,我想捕获站点返回的 pdf,然后使用更具信息性的名称保存它(我必须这样做数百次,所以我不想按顺序手动浏览所有 pdf查找有关特定公司的报告)。

所以,我的问题是:如何捕获由网站动态生成并返回的 pdf,然后将其保存在我自己选择的名称下?

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

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

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

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

 file.info(L)

然后使用

更改文件名
file.rename(identifiedName, meaningFullName)