1

編集:私の最初の質問はかなり外れていました。申し訳ありません。Mark Reed は、本当の問題を見つけるのを手伝ってくれました。

このコードが機能することに注意してください。

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

source_url = "www.flickr.com"
puts "Visiting #{source_url}"
page = Nokogiri::HTML(open("http://website/script.php?value=#{source_url}"))
textarea = page.css('textarea') 


filename = source_url.to_s + ".txt"
create_file = File.open("#{filename}", 'w')
create_file.puts textarea
create_file.close

これは本当に素晴らしいことですが、Flickr だけでなく ~110 の URL に対してこれを行う必要があります。動作していないループは次のとおりです。

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

File.open('sources.txt').each_line do |source_url|
  puts "Visiting #{source_url}"
  page = Nokogiri::HTML(open("http://website/script.php?value=#{source_url}"))
  textarea = page.css('textarea') 

  filename = source_url.to_s + ".txt"
  create_file = File.open("#{filename}", 'w')
  create_file.puts "#{textarea}"
  create_file.close
end

ループで何が間違っていますか?

4

2 に答える 2

1

さて、入力ファイルの行をループしています。これを行うと、newilne で終わる文字列が得られます。そのため、名前の途中に改行を含むファイルを作成しようとしていますが、これは Windows では合法ではありません。

文字列をチョップするだけです:

File.open('sources.txt').each_line do |source_url|
  source_url.chomp!
  # ... rest of code goes here ...

File#foreachの代わりに使用することもできますFile#open.each_line:

File.foreach('sources.txt') do |source_url|
  source_url.chomp!
  # ... rest of code goes here 
于 2012-05-05T03:58:55.727 に答える
0

かっこを間違った場所に置いています:

create_file = File.open(variable, 'w')
于 2012-05-05T01:43:34.310 に答える