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

这真是太棒了,但我需要它来对大约 110 个 URL 执行此操作,而不仅仅是 Flickr。这是我的循环不起作用:

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 回答