2016-05-10 6 views
0

Ich praktiziere das Extrahieren von Daten von einer XML-Site und ich benutze Nokogiri zum Lesen und Parsen. Ich muss die Daten analysieren, aber für den Moment versuche ich nur eine Ausgabe ohne Erfolg zu bekommen.Fehler beim Extrahieren von Daten mit Nokogiri

Ich habe den folgenden Code:

require 'nokogiri' 
require 'open-uri' 

doc = Nokogiri::HTML(open("http://www.ibiblio.org/xml/examples/shakespeare/macbeth.xml")) 

doc.xpath('//PERSONA').each do |char_element| 
    puts char_element.text 
end 

ich einfach bin versucht, die Buchstaben aus der XML-Website zu lesen, aber ich bin keine Ergebnisse bekommen, wenn ich es im Terminal laufen. Ich habe auch versucht, nur einen einfachen XPath-Aufruf zu schreiben wie die folgenden Liste:

doc.xpath("//PERSONA") 

oder

doc.xpath("PLAY TITLE") 

Und ich bekomme entweder einen Fehler oder es wirkt einfach, als ob nichts eingegeben wurde. Ich habe eine einfache Funktion, um es zu testen, damit ich weiß, es liest es. Kann mir jemand sagen, was ich falsch mache?

Antwort

1

Sie versuchen XML-Datei als HTML-Datei zu lesen. Bitte versuchen, dieses Beispiel:

doc = Nokogiri::XML(open("http://www.ibiblio.org/xml/examples/shakespeare/macbeth.xml")) 

doc.xpath('//PERSONA').each{|ce| p ce.text } 
"DUNCAN, king of Scotland." 
"MALCOLM" 
"DONALBAIN" 
"MACBETH" 
"BANQUO" 
"MACDUFF" 
"LENNOX" 
"ROSS" 
"MENTEITH" 
"ANGUS" 
"CAITHNESS" 
"FLEANCE, son to Banquo." 
"SIWARD, Earl of Northumberland, general of the English forces." 
"YOUNG SIWARD, his son." 
"SEYTON, an officer attending on Macbeth." 
"Boy, son to Macduff. " 
"An English Doctor. " 
"A Scotch Doctor. " 
"A Soldier." 
"A Porter." 
"An Old Man." 
"LADY MACBETH" 
"LADY MACDUFF" 
"Gentlewoman attending on Lady Macbeth. " 
"HECATE" 
"Three Witches." 
"Apparitions." 
"Lords, Gentlemen, Officers, Soldiers, Murderers, Attendants, and Messengers. " 

Bitte achten Sie darauf, Sie Nokogiri::XML statt Nokogiri::HTML

+0

@fancy_daniel verwenden, beachten Sie bitte meine Antwort als richtig, wenn es wirklich so war zu markieren. Danke im Voraus. – retgoat

+0

Danke @retgoat, ich dachte, ich hätte das versucht, aber ich schätze, ich habe es falsch gemacht. Danke für Ihre Hilfe. –

+0

@fancy_daniel willkommen :) – retgoat