使用Nokogiri解析多个URL?

时间:2012-06-23 03:15:45

标签: ruby nokogiri

我正在尝试从十个网址列表中获取一个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

1 个答案:

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