运行以下命令,它应该返回序列。 Xpath使用chrome Xpath进行处理,但在nokogiri
中它只返回空字符串。
require 'open-uri'
require 'nokogiri'
doc = Nokogiri::HTML(open("https://pt.wiktionary.org/wiki/fazer"))
p sequence = doc.xpath('//*[@id="NavFrame1"]/div[2]/table[2]/tbody/tr[12]')
我刚刚和Capybara一起尝试过Poltergeist;它工作得很好。当我尝试你的代码但是,div[@id="NavFrame1"]
不存在。所以可能存在解析问题......
require 'capybara'
require 'capybara/dsl'
require 'capybara/poltergeist'
Capybara.register_driver :poltergeist_debug do |app|
Capybara::Poltergeist::Driver.new(app, inspector: true)
end
Capybara.javascript_driver = :poltergeist_debug
Capybara.current_driver = :poltergeist_debug
visit("https://pt.wiktionary.org/wiki/fazer")
doc = Nokogiri::HTML.parse(page.html)
p sequence = doc.xpath('//*[@id="NavFrame1"]/div[2]/table[2]/tbody/tr[12]')
问题不在于@shota建议的解析
实际问题是您尝试解析的div元素不是第一个响应的一部分。它实际上是使用JavaScript添加的。
如果你看到的页面来源
https://pt.wiktionary.org/wiki/fazer即view-source:https://pt.wiktionary.org/wiki/fazer
你找不到任何id为NavFrame1
的元素
你也可以使用Quick Javascript switcher这样的javascript disabler扩展来验证这一点