0

テキストファイルに記載されているすべてのURLにアクセスしたい。

私は持っています:

require 'mechanize'

File.open('sources.txt').each_line { |url|
  agent = Mechanize.new
  puts "Visiting #{url}"
  mypage = agent.get("#{url}")
  current_url = mypage.uri.to_s
  puts "The final URL is #{current_url}"
}

このコードは、のURLを実行し、実行してsources.txtいることを通知し、ページに到達するとURLを通知します。つまり、にあるが、(WWWなし)に解決される場合は、www.foo.comそのように通知されます。source.txtwww.foo.comfoo.com

解決済み/最終/現在の各URLを1行で区切られた単一のテキストファイルに保存するにはどうすればよいですか?

4

2 に答える 2

1

ファイルに追加する場合は、「w」の代わりに「a」フラグを使用します。フラグはここにありますhttp://www.ruby-doc.org/core-1.9.3/IO.html

50.times do |n|
  File.open 'destinations.txt', 'a' do |file|
    file.write "line #{n}\n"
  end
end

更新(コードのリファクタリング):

require 'mechanize'
agent = Mechanize.new

output = File.open 'output.txt', 'a'
File.open('sources.txt').each_line do |url|
  puts "Visiting #{url}"
  mypage = agent.get("#{url}")
  @current_url = mypage.uri.to_s
  puts "The final URL is #{@current_url}"
  output.puts @current_url
end
output.close

このようにして、各ファイルを1回開きます。

于 2012-05-01T06:46:04.603 に答える
1

とった。

require 'mechanize'
agent = Mechanize.new

File.open('sources.txt').each_line do |url|
  puts "Visiting #{url}"
  mypage = agent.get("#{url}")
  @current_url = mypage.uri.to_s
  puts "The final URL is #{@current_url}"
File.open('output.txt', 'a') do |output| 
output.puts @current_url
end
 end

フォーマットについては申し訳ありませんが、インデントをどこに配置するかについてはまだ気まずいです。

于 2012-05-01T15:21:14.260 に答える