请注意,此代码有效:
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
我的循环错误是什么?
答案 0 :(得分: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
答案 1 :(得分:0)
你把括号放在错误的地方:
create_file = File.open(variable, 'w')