如何使用XPath访问在JavaScript中呈现的HTML元素



如何使用XPath和Nokogiri获得具有特定类名的<td> ?表是嵌套的,其中一些没有id或类,所以我不能嵌套这样的东西:

//table/tbody/tr/td

到目前为止我写的是:

doc = Nokogiri::HTML(open("http://www.goalzz.com/default.aspx?c=8358"))
  doc.xpath('//td[@class="m_g"]').each do |node|
  pp node.to_s
end

任何想法?有几个<td>有这个类名,我想把它们都找出来。

使用gem "capybara-webkit"是在完全javascript渲染视图中操作该网站的可行方法。

这是一个capybara-webkit脚本的粗略示例。

#!/usr/bin/env ruby
require "rubygems"
require "pp"
require "bundler/setup"
require "capybara"
require "capybara/dsl"
require "capybara-webkit"
Capybara.run_server = false
Capybara.current_driver = :webkit
Capybara.app_host = "http://www.goalzz.com/"
module Test
  class Goalzz
    include Capybara::DSL
    def get_results
      visit('/default.aspx?c=8358')
      all(:xpath, '//td[@class="m_g"]').each { |node| pp node.to_s }
    end
  end
end
spider = Test::Goalzz.new
spider.get_results

在这种情况下(由于页面是动态创建的),需要找到示例xpath,是一个功能齐全的javascript web驱动引擎。

这些td s上的类属性完全是"m_g",还是它们在单个td上有多个类?如果是后者,则可以使用这个XPath:

//td[contains(@class, "m_g")]

相关内容

  • 没有找到相关文章

最新更新