0

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

1 回答 1

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
于 2012-06-24T04:51:02.083 回答