2016-09-23 15 views
0

私は、それらのローカルコピーをダウンロードするのに必要な多くのzipファイルを含むurlを持っています。私はこれまで通り:RubyでURLからファイルをダウンロード

require 'open-uri' 
require 'pry' 

def download_xml(url, dest) 
    open(url) do |u| 
    File.open(dest, 'wb') { |f| f.write(u.read) } 
    end 
end 

urls = ["http://feed.omgili.com/5Rh5AMTrc4Pv/mainstream/posts/"] 

urls.each { |url| download_xml(url, url.split('/').last) } 

しかし、私はその場所にあるか、それらの間をループするzipファイルにアクセスできないようです。そのURLの末尾にある各zipファイルをループして、その配列にアクセスしてメソッドでダウンロードできるようにするにはどうすればよいですか?

+0

正しい答えとして私の答えを記入することを忘れないでください。どうもありがとう! – mertyildiran

+0

私は確かにします! –

答えて

1

私は最初の鋸山宝石インストール、HTMLを解析するために鋸山の宝石を使用しています

noko.rb

require 'rubygems' 
require 'nokogiri' 
require 'open-uri' 

page = Nokogiri::HTML(open("http://feed.omgili.com/5Rh5AMTrc4Pv/mainstream/posts/")) # Open web address with Nokogiri 
puts page.class # => Nokogiri::HTML::Documents 

for file_link in page.css('a') # For each a HTML tag/link 
    if file_link.text[-4,4] != ".zip" # If it's not a zip file 
    next # Continue the loop 
    end 
    link = "http://feed.omgili.com/5Rh5AMTrc4Pv/mainstream/posts/" + file_link.text # Generate the zip file's link 
    puts link 
    open(file_link.text, 'wb') do |file| 
    file << open(link).read # Save the zip file to this directory 
    end 
    puts file_link.text + " has been downloaded." 
end 

I:

sudo apt-get install build-essential patch 
sudo apt-get install ruby-dev zlib1g-dev liblzma-dev 
sudo gem install nokogiri 

ソリューションを問題に固有のものコメントでコードを説明しました。

最終的には、HTMLファイルを解析し、ダウンロードリンクを1つずつ生成し、最後にダウンロードするという選択肢はありません。

+0

恐ろしい!私は今晩それを試してみよう!どうもありがとうございます!私はNokogiriについて読んだことがありますが、多くのリソースがありませんでした。私はC#MVCで働いています。夕方に帰るときには、Local Ruby Users Group Slackチームで誰も利用できません。ハハしかし、本当に感謝しています - 特にコメント!もう一度ありがとう、私は今晩戻ってきます。 –

関連する問題