我開始使用ruby編程語言。我有一個Ruby腳本檢索的PDF文件頁面上海葵:使用webcrawler下載pdf文件
Anemone.crawl("http://example.com") do |anemone|
anemone.on_pages_like(/\b.+.pdf/) do |page|
puts page.url
end
end
我用寶石紅寶石想下載page.url。我可以使用什麼寶石來下載page.url?
我開始使用ruby編程語言。我有一個Ruby腳本檢索的PDF文件頁面上海葵:使用webcrawler下載pdf文件
Anemone.crawl("http://example.com") do |anemone|
anemone.on_pages_like(/\b.+.pdf/) do |page|
puts page.url
end
end
我用寶石紅寶石想下載page.url。我可以使用什麼寶石來下載page.url?
如果你是在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
恕我直言,'curl'絕對是一個矯枉過正的地方。 – mudasobwa 2013-03-01 18:47:25
請求Curl在內容已經下載後第二次下載文件會浪費帶寬和時間。 – 2013-03-02 04:12:50
無需額外的寶石,試試這個
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很好。
非常感謝,但是我仍然有問題。有些情況下,pdf文件下載時可以互換(覆蓋) – 2013-03-02 14:12:39
您下載哪個站點?您可以通過添加例如計數器來使文件名具有唯一性,以便它們不會被覆蓋和/或從站點重新創建文件夾結構 – peter 2013-03-02 20:54:53
當然,你可以在網上搜索「ruby http clients」或類似的東西?有很多圖書館這樣做... – maerics 2013-03-01 17:00:28