how to use nokogiri methods .xpath & .at_xpath

Posted by Radek on Stack Overflow See other posts from Stack Overflow or by Radek
Published on 2010-01-22T19:46:35Z Indexed on 2010/04/05 1:53 UTC
Read the original article Hit count: 893

Filed under:
|
|
|

I'm learning how to use nokogiri and few questions came to me based on the code below

require 'rubygems'
require 'mechanize'

post_agent = WWW::Mechanize.new
post_page = post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')

puts "\nabsolute path with tbody gives nil"
puts  post_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div[2]').xpath('text()').to_s.strip.inspect

puts "\n.at_xpath gives an empty string"
puts post_page.parser.at_xpath("//div[@id='posts']/div/table/tr/td/div[2]").at_xpath('text()').to_s.strip.inspect

puts "\ntwo lines solution with .at_xpath gives an empty string"
rows =   post_page.parser.xpath("//div[@id='posts']/div/table/tr/td/div[2]")
puts rows[0].at_xpath('text()').to_s.strip.inspect


puts
puts "two lines working code"
rows =   post_page.parser.xpath("//div[@id='posts']/div/table/tr/td/div[2]")
puts rows[0].xpath('text()').to_s.strip

puts "\none line working code"
puts post_page.parser.xpath("//div[@id='posts']/div/table/tr/td/div[2]")[0].xpath('text()').to_s.strip

puts "\nanother one line code"
puts post_page.parser.at_xpath("//div[@id='posts']/div/table/tr/td/div[2]").xpath('text()').to_s.strip

puts "\none line code with full path"
puts post_page.parser.xpath("/html/body/div/div/div/div/div/table/tr/td/div[2]")[0].xpath('text()').to_s.strip
  • is it better to use // or / in xpath? @AnthonyWJones says that 'the use of an unprefixed //' is not so good idea
  • I had to remove tbody from any working xpath otherwise I got 'nil' result. How is possible to remove an element from the xpath to get things work?
  • do I have to use .xpath twice to extract data if not using full xpath?
  • why I cannot make .at_xpath working to extract data? it works nicely here what is the difference?

© Stack Overflow or respective owner

Related posts about nokogiri

Related posts about xpath