R 下载前先确定文件扩展名

R 下载前先确定文件扩展名,r,web-scraping,download,R,Web Scraping,Download,我正在做一个项目,需要进入一个相当于FTC的巴西数据库,并下载一些文件(我稍后会处理),我想使用R实现自动化 我的问题是,在命名文件时,我必须告诉它文件扩展名,我不知道它将是什么(通常是扫描的pdf,但有时是html文件)。这里有一个例子: 我要第一份和第十份文件。下载它们很容易: download.file("https://sei.cade.gov.br/sei/modulos/pesquisa/md_pesq_documento_consulta_externa.php?DZ2uWeaY

我正在做一个项目,需要进入一个相当于FTC的巴西数据库,并下载一些文件(我稍后会处理),我想使用R实现自动化

我的问题是,在命名文件时,我必须告诉它文件扩展名,我不知道它将是什么(通常是扫描的pdf,但有时是html文件)。这里有一个例子:

我要第一份和第十份文件。下载它们很容易:

download.file("https://sei.cade.gov.br/sei/modulos/pesquisa/md_pesq_documento_consulta_externa.php?DZ2uWeaYicbuRZEFhBt-n3BfPLlu9u7akQAh8mpB9yPDzrBMElK1BGz7u3NcOFP7-Z5s9oDvQR1K4ELVR_nmNlPto_G3CRD_y2Hu6JLvHZVV2LDxnr4dccffqX3xlEao", destfile = 'C:/teste/teste1', mode = 'wb')
download.file("https://sei.cade.gov.br/sei/modulos/pesquisa/md_pesq_documento_consulta_externa.php?DZ2uWeaYicbuRZEFhBt-n3BfPLlu9u7akQAh8mpB9yPaFy5S3krC8lTKjlRbfodOIg2NArJmAFS5PyUEHL3hnJYr8VG9zLGdNts6K99Ht673e_ZPr2gr3Cw7r8zJqRiH", destfile = 'C:/teste/teste2', mode = 'wb')

问题是,我不知道哪一个是pdf文件,哪一个是html文件,除非用另一个程序手动打开它们。有没有办法告诉R在下载时自动添加正确的文件扩展名?

如果您使用
httr
软件包,您可以获得内容类型标题,这将帮助您确定文件的类型。您可以使用
HEAD()
函数获取文件的标题。比如你的URL

urls <- c(
  "https://sei.cade.gov.br/sei/modulos/pesquisa/md_pesq_documento_consulta_externa.php?DZ2uWeaYicbuRZEFhBt-n3BfPLlu9u7akQAh8mpB9yPDzrBMElK1BGz7u3NcOFP7-Z5s9oDvQR1K4ELVR_nmNlPto_G3CRD_y2Hu6JLvHZVV2LDxnr4dccffqX3xlEao", 
  "https://sei.cade.gov.br/sei/modulos/pesquisa/md_pesq_documento_consulta_externa.php?DZ2uWeaYicbuRZEFhBt-n3BfPLlu9u7akQAh8mpB9yPaFy5S3krC8lTKjlRbfodOIg2NArJmAFS5PyUEHL3hnJYr8VG9zLGdNts6K99Ht673e_ZPr2gr3Cw7r8zJqRiH"
)

url非常感谢!它可以是(很少)一个zip文件,所以我可能只需要检查它是否是三者之一。
get_content_type <- function(x) {
    unname(sapply(x, function(x) headers(HEAD(x))[["content-type"]]))
}

get_content_type(urls)
# [1] "application/pdf;"              "text/html; charset=ISO-8859-1"