0

Nokogiri を使用してマルチドメイン検索を行うことはできますか? 単一のドメイン/ページに対して複数の Xpath/CSS 検索を実行できるが、複数のドメインを実行できることは認識していますか?

たとえば、http://www.asus.com/Notebooks_Ultrabooks/S56CA/#specificationshttp://www.asus.com/Notebooks_Ultrabooks/ASUS_TAICHI_21/#specificationsをスクレイピングしたい

マイコード

require 'nokogiri'
require 'open-uri'
require 'spreadsheet'

doc = Nokogiri::HTML(open("http://www.asus.com/Notebooks_Ultrabooks/ASUS_TAICHI_21/#specifications"))

#Grab our product specifications
data = doc.css('div#specifications div#spec-area ul.product-spec li')

#Modify our data
lines = data.map(&:text)

#Create the Spreadsheet
Spreadsheet.client_encoding = 'UTF-8'
book = Spreadsheet::Workbook.new

sheet1 = book.create_worksheet
sheet1.name = 'My First Worksheet'

#Output our data  to the Spreadsheet
lines.each.with_index do |line, i|                                                        
  sheet1[i, 0] = line                                                                     
end    

book.write 'C:/Users/Barry/Desktop/output.xls'
4

1 に答える 1

2

Nokogiri には URL の概念がなく、XML または HTML の文字列または IO ストリームについてのみ認識します。OpenURI の目的と Nokogiri の目的を混同しています。

複数のサイトから読み取りたい場合は、単に URL をループし、現在の URL を OpenURI にopenページに渡します。

%w[
  http://www.asus.com/Notebooks_Ultrabooks/S56CA/#specifications 
  http://www.asus.com/Notebooks_Ultrabooks/ASUS_TAICHI_21/#specifications
].each do |url|

  doc = Nokogiri::HTML(open(url))
  # do somethng with the document...
end

OpenURI はページを読み取り、その内容を解析のために Nokogiri に渡します。Nokogiri は一度に 1 ページしか表示しません。OpenURI によって渡されるのはそれだけだからです。

于 2013-02-04T14:52:17.403 に答える