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

时间:2015-04-11 09:56:18

标签: r httr rvest rselenium

我正在尝试下载pdf文件,如下所示: (因为这是一个商业网站,我不得不替换下面的网址,用户名和密码)

## 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,我已经找出了我感兴趣的每个报告的页面名称。在页面上是一个&#34;下载pdf&#34;按钮。当我单击此按钮时,该站点以pdf格式动态生成报告并返回报告(使用随机名称,如&#34; 97da08491e3e41447f591c2b668c0602.pdf&#34;。我认为它使用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()

当&#34;下载pdf&#34;单击按钮,文档由站点生成,然后由Chrome保存。 (随机名称每次都不同,我无法使用download.file()之类的东西来获取它。这样可以正常工作,除了文档是用这个随机名称保存的。相反,我想捕获网站返回的pdf,然后使用更具信息性的名称保存它(我必须这样做数百次,所以我不想要通过所有的pdf&# 39;手动以便找到特定公司的报告)。

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

 file.info(L)

然后使用

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