如何打印XPath值?

时间:2013-12-20 01:31:38

标签: ruby xpath mechanize

我想打印XPath节点的内容。这就是我所拥有的:

require "mechanize"
agent = Mechanize.new
agent.get("http://store.steampowered.com/promotion/snowglobefaq")
puts agent.xpath("//*[@id='item_52b3985a70d58']/div[4]")

返回:<main>: undefined method xpath for #<Mechanize:0x2fa18c0> (NoMethodError)

我刚刚开始使用Mechanize并且不知道我在做什么,但是,我已经使用了Watir,并认为这样可行,但事实并非如此。

2 个答案:

答案 0 :(得分:0)

您在检索页面后使用Nokogiri来解析页面。以下是示例代码:

m = Mechanize.new
result = m.get("http://google.com")

html = Nokogiri::HTML(result.body)
divs = html.xpath('//div').map { |div| div.content } # here you can do whatever is needed with the divs
                                                     # I've mapped their content into an array

答案 1 :(得分:0)

有两件事是错的:

  1. 该页面上不存在该ID。试试这个以查看标签ID列表:

    require "open-uri"
    require 'nokogiri'
    
    doc = Nokogiri::HTML(open("http://store.steampowered.com/promotion/snowglobefaq"))
    puts doc.search('[id*="item"]').map{ |n| n['id'] }.sort
    
  2. 正确的方法链是agent.page.xpath
  3. 由于没有示例HTML确切显示您想要的标记,因此我们无法为您提供帮助。