如何从web下载带有R的pdf文件(编码问题)

如何从web下载带有R的pdf文件(编码问题),r,encode,R,Encode,我正在尝试使用R从网站下载pdf文件。当我尝试使用函数browserURL时,它仅与参数encodeIfNeeded=T一起工作。因此,如果我将相同的url传递给函数download.file,它将返回“无法打开destfile‘download/teste.pdf’,原因是‘没有这样的文件或目录’,即。,它找不到正确的url 我如何更正编码,以便能够以编程方式下载文件? 我需要将其自动化,因为有一千多个文件需要下载 以下是一个最小可复制代码: library(tidyverse) librar

我正在尝试使用R从网站下载pdf文件。当我尝试使用函数browserURL时,它仅与参数encodeIfNeeded=T一起工作。因此,如果我将相同的url传递给函数download.file,它将返回“无法打开destfile‘download/teste.pdf’,原因是‘没有这样的文件或目录’,即。,它找不到正确的url

我如何更正编码,以便能够以编程方式下载文件? 我需要将其自动化,因为有一千多个文件需要下载

以下是一个最小可复制代码:

library(tidyverse)
library(rvest)


url <- "http://www.ouvidoriageral.sp.gov.br/decisoesLAI.html"
webpage <- read_html(url)

# scrapping hyperlinks
links_decisoes <- html_nodes(webpage,".borderTD a") %>%
  html_attr("href")

# creating full/correct url
full_links <- paste("http://www.ouvidoriageral.sp.gov.br/", links_decisoes, sep="" )

# browseURL only works with encodeIfNeeded = T
browseURL(full_links[1], encodeIfNeeded = T,
          browser = "C://Program Files//Mozilla Firefox//firefox.exe")
# returns an error
download.file(full_links[1], "downloaded/teste.pdf") 
库(tidyverse)
图书馆(rvest)

url这里有几个问题。首先,指向某些文件的链接没有正确格式化为URL——它们包含空格和其他特殊字符。为了转换它们,您必须使用
url\u escape()
,在加载rvest时,您应该可以使用它,因为它也会加载xml2,其中包含
url\u escape()

第二,您保存到的路径是相对于R主目录的,但是您没有告诉R这一点。您可能需要这样的完整路径:
“C://Users/Manoel/Documents/downloaded/testes.pdf”
,或者像这样的相对路径:
path.expand(“~/downloaded/testes.pdf”)

此代码应满足您的需要:

库(tidyverse)
图书馆(rvest)
#删除超链接
完整链接%
读取html()%>%
html_节点(“.borderTD a”)%>%
html_attr(“href”)%%>%
url_escape()%>%
{0(“http://www.ouvidoriageral.sp.gov.br/", .)}
#查看firefox中的页面
browseURL(完整链接[1],encodeIfNeeded=T,browser=“firefox.exe”)
#将pdf保存到“已下载”文件夹(如果存在)
文件(完整链接[1],path.expand(“~/download/teste.pdf”))

这里有几个问题。首先,指向某些文件的链接没有正确格式化为URL——它们包含空格和其他特殊字符。为了转换它们,您必须使用
url\u escape()
,在加载rvest时,您应该可以使用它,因为它也会加载xml2,其中包含
url\u escape()

第二,您保存到的路径是相对于R主目录的,但是您没有告诉R这一点。您可能需要这样的完整路径:
“C://Users/Manoel/Documents/downloaded/testes.pdf”
,或者像这样的相对路径:
path.expand(“~/downloaded/testes.pdf”)

此代码应满足您的需要:

库(tidyverse)
图书馆(rvest)
#删除超链接
完整链接%
读取html()%>%
html_节点(“.borderTD a”)%>%
html_attr(“href”)%%>%
url_escape()%>%
{0(“http://www.ouvidoriageral.sp.gov.br/", .)}
#查看firefox中的页面
browseURL(完整链接[1],encodeIfNeeded=T,browser=“firefox.exe”)
#将pdf保存到“已下载”文件夹(如果存在)
文件(完整链接[1],path.expand(“~/download/teste.pdf”))

您的工作目录中是否存在“已下载”文件夹<代码>下载。文件
不会为您创建不存在的新文件夹。
list.dirs(path=“.”,recursive=FALSE)
返回什么?工作目录中是否存在“下载”文件夹<代码>下载。文件不会为您创建不存在的新文件夹。
list.dirs(path=“.”,recursive=FALSE)
返回什么?它成功了,谢谢。我只需将mode=“wb”添加到函数download.file,因为我在Windows上。@AllanCameron:你能看看我的问题吗?非常感谢。成功了,谢谢。我只需将mode=“wb”添加到函数download.file,因为我在Windows上。@AllanCameron:你能看看我的问题吗?非常感谢。