我正在尝试从十个网址列表中获取一个href列表并遇到麻烦。
这些块中的每一个都是彼此分开工作的,但是,当我尝试将它们组合起来时,我得到一个1-10页的列表和一个错误。什么是正确的方法?
#!/usr/bin/env ruby
require 'rubygems'
require 'nokogiri'
require 'open-uri'
#/ this prints all 10 of the URLs to pull page hrefs from.
1.upto(10) do |pagenum|
url = "http://www.mywebsite.com/page/#{pagenum}"
puts url
end
#/ Prints out all of the hrefs.
doc = Nokogiri::HTML(open(url))
doc.xpath('//h2/a/@href').each do |node|
puts node.text
end
答案 0 :(得分:0)
这是您的代码,注释:
1.upto(10) do |pagenum|
# Create a local variable named `url`
url = "http://www.mywebsite.com/page/#{pagenum}"
# Print it
puts url
end
# Open...uhm...which URL?
doc = Nokogiri::HTML(open(url))
问题是url
变量在本地“范围”到upto
块。一旦存在该块,它就不再存在。也许你想要这个:
1.upto(10) do |pagenum|
# Create a local variable named `url`
url = "http://www.mywebsite.com/page/#{pagenum}"
# Print it
puts url
# Print this URL
doc = Nokogiri::HTML(open(url))
doc.xpath('//h2/a/@href').each do |node|
puts node.text
end
end