如何在链接中没有.pdf的ruby下载pdf文件

时间:2013-07-24 19:03:18

标签: ruby pdf download

我需要从一个网站下载pdf,该网站没有使用ruby提供以(.pdf)结尾的链接。手动,当我点击链接下载pdf时,它会转到新页面,并在一段时间后出现保存/打开文件的对话框。

请帮我下载文件。

The link

2 个答案:

答案 0 :(得分:3)

你这样做

require 'open-uri'
File.open('my_file_name.pdf', "wb") do |file|
  file.write open('http://someurl.com/2013-1-2/somefile/download').read
end

我一直在为我的项目做这件事而且有效。

答案 1 :(得分:0)

如果您只需要一个简单的ruby脚本,我就会运行wget。像这样exec 'wget "http://path.to.the.file/and/some/params"'

在那时,你可以运行wget。

另一种方式,就是在你知道pdf在

的页面上运行一个get

source = Net::HTTP.get("http://the.website.com", "/and/some/params")

您可以使用许多其他http客户端,但只要您向pdf所在的端点发出get请求,它就会为您提供原始数据。然后你可以重命名文件,你将获得pdf

在您的情况下,我运行以下命令来获取pdf

wget http://www.lawcommission.gov.np/en/documents/prevailing-laws/constitution/func-download/129/chk,d8c4644b0f086a04d8d363cb86fb1647/no_html,1/
mv index.html thefile.pdf

然后打开pdf。请注意,这些是linux命令。如果你想用ruby脚本获取文件,你可以使用我之前提到过的东西。

<强>更新

有一个额外的并发症,最初没有说明,这是每次pdf更新时pdf的URL都会改变。为了使这项工作,您可能想要做一些涉及网页抓取的事情。我建议nokogiri。这样,您可以查看下载所在的页面,然后对所需的URL执行get请求。此外,托管pdf的服务器配置错误,并在打开页面的几秒钟内中断了chrome。

如何解决这个问题:我去了网站,并刷新了它。然后断开与服务器的连接(按X,否则会有刷新按钮)。然后右键单击下载链接旁边的,然后选择inspect element。然后浏览dom以找到明确识别的内容(如id)。谢天谢地,我发现了一些<strong id="telecharger"> Download</strong>。这意味着您可以使用类似page.css('strong#telecharger')[0].parent['href']的内容。这应该会为您提供一个URL。然后您可以执行如上所述的get请求。我没有时间为你制作脚本(做太多工作),但这应该足以解决问题。