0

10個の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 に答える