用webcrawler下载pdf文件

时间:2013-03-01 16:26:47

标签: ruby gem

我开始使用ruby编程语言。我有一个ruby脚本,可以在页面上用海葵抓取pdf文件:

Anemone.crawl("http://example.com") do |anemone|
  anemone.on_pages_like(/\b.+.pdf/) do |page|
    puts page.url
  end
end

我想使用gem ruby​​下载page.url。我可以用什么宝石来下载page.url?

2 个答案:

答案 0 :(得分:3)

不需要额外的宝石,试试这个

require 'anemone'

Anemone.crawl("http://www.rubyinside.com/media/",:depth_limit => 1, :obey_robots_txt => true, :skip_query_strings => true) do |anemone|
  anemone.on_pages_like(/\b.+.pdf/) do |page|
    begin
      filename = File.basename(page.url.request_uri.to_s)
      File.open(filename,"wb") {|f| f.write(page.body)}
      puts "downloaded #{page.url}"
    rescue
      puts "error while downloading #{page.url}"
    end
  end
end

给出

downloaded http://www.rubyinside.com/media/poignant-guide.pdf

并且pdf没问题。

答案 1 :(得分:-1)

如果您使用的是UNIX系统,可能是UnixUtils

Anemone.crawl("http://example.com") do |anemone|
  anemone.on_pages_like(/\b.+.pdf/) do |page|
    puts page.url            # => http://example.com/foo.bar
    puts UnixUtils.curl(url) # => /tmp/foo.bar.1239u98sd
  end
end