使用 Nokogiri 提取数据时遇到问题
Trouble Extracting Data with Nokogiri
我正在练习从 XML 网站提取数据,我正在使用 Nokogiri 进行读取和解析。我需要分析数据,但现在,我只是试图获得没有成功的输出。
我有以下代码:
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
我只是想从 XML 网站上读取字符,但是当我在终端中 运行 时没有得到任何结果。我还尝试编写一个简单的 xpath 调用,如下所示:
doc.xpath("//PERSONA")
或
doc.xpath("PLAY TITLE")
然后我得到一个错误,或者它只是表现得好像没有输入任何内容。
我已经放置了一个简单的函数来测试它,所以我知道它正在读取它。谁能告诉我我做错了什么?
您正在尝试将 XML 文件作为 HTML 文件读取。
请试试这个例子:
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. "
请确保您使用的是 Nokogiri::XML
而不是 Nokogiri::HTML
我正在练习从 XML 网站提取数据,我正在使用 Nokogiri 进行读取和解析。我需要分析数据,但现在,我只是试图获得没有成功的输出。
我有以下代码:
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
我只是想从 XML 网站上读取字符,但是当我在终端中 运行 时没有得到任何结果。我还尝试编写一个简单的 xpath 调用,如下所示:
doc.xpath("//PERSONA")
或
doc.xpath("PLAY TITLE")
然后我得到一个错误,或者它只是表现得好像没有输入任何内容。 我已经放置了一个简单的函数来测试它,所以我知道它正在读取它。谁能告诉我我做错了什么?
您正在尝试将 XML 文件作为 HTML 文件读取。 请试试这个例子:
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. "
请确保您使用的是 Nokogiri::XML
而不是 Nokogiri::HTML