1

如何<td>使用 XPath 和 Nokogiri 获得具有特定类名的名称?表是嵌套的,其中一些没有 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>具有该类名的 s很少,我想获得所有这些。

4

2 回答 2

1

这些tds 上的类属性是否完全是“m_g”,或者它们在一个 s 上是否有多个类td?如果是后者,这个 XPath 可能会起作用:

//td[contains(@class, "m_g")]
于 2013-01-10T17:46:52.570 回答
1

使用 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 webdriving 引擎。

于 2013-01-10T18:30:10.860 回答