comment utiliser nokogiri méthodes .xpath & .at_xpath

Je suis en train d'apprendre comment utiliser nokogiri et quelques questions me base sur le code ci-dessous

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
  • est-il préférable d'utiliser //ou /dans xpath? @AnthonyWJones dit que "l'utilisation d'un unprefixed //" n'en est pas une bonne idée
  • J'ai dû enlever tbody de travail xpath sinon, je suis " nil " résultat. Comment est-ce possible de supprimer un élément à partir de l'expression xpath, pour obtenir les choses fonctionnent?
  • dois-je utiliser .xpath deux fois pour extraire des données si vous n'utilisez pas pleinement xpath?
  • pourquoi je ne peux pas faire .at_xpath de travail pour extraire les données? il fonctionne très bien, ici quelle est la différence?

OriginalL'auteur Radek | 2010-01-22