我试图从google获取结果并将它们保存到文件中。但结果正在重复。 当我将它们保存到文件时,只有最后一个链接被打印到文件。抓取时YouTube的重复结果
require 'rubygems'
require 'mechanize'
agent = Mechanize.new
page = agent.get('http://www.google.com/videohp')
google_form = page.form('f')
google_form.q = 'ruby'
page = agent.submit(google_form, google_form.buttons.first)
linky = page.links
for link in linky do
if link.href.to_s =~/url.q/
str=link.href.to_s
strList=str.split(%r{=|&})
$url=strList[1].gsub("h%3Fv%3D", "h?v=")
$heading = link.text
$res = $url
if ($url.to_s.include? "webcache")
next
elsif ($url.to_s.include? "channel")
next
end
puts $res
end
end
for link in linky do
File.open("aaa.htm", 'w') { |file| file.write($res) }
end
'file.write($ res)'总是将'$ res'的值写入文件。你可能想用'link'做一些事情(或者把写作移到第一个循环中)。另外,你应该使用'each'而不是'for'并且避免使用全局变量(那些以'$'开头的变量)。 – Stefan
谢谢@Stefan我会纠正他们。 –