J'apprends comment utiliser nokogiri et quelques questions me sont venues me basant sur le code ci-dessouscomment utiliser des méthodes Nokogiri .xpath & .at_xpath
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 // non préfixé» n'est pas si bonne idée
- Je devais retirer tbody de n'importe quel xpath de travail sinon j'ai obtenu le résultat «nul». Comment est-il possible de supprimer un élément du xpath pour que les choses fonctionnent?
- Dois-je utiliser .xpath deux fois pour extraire des données si je n'utilise pas xpath?
- pourquoi je ne peux pas faire fonctionner .at_xpath pour extraire des données? cela fonctionne bien here quelle est la différence?
@Simone Carletti: merci pour cela. Peut-être que toutes mes questions viennent parce que je ne sais pas comment lire la documentation sur http://nokogiri.org Je ne sais pas comment trouver quoi que ce soit à propos de l'appel de la méthode de texte sur le nœud. Serait-il possible d'écrire plus à ce sujet. Je trouve déjà mon script un peu lent, ce serait génial de le rendre plus rapide. – Radek
J'ai trouvé qu'un espace réservé XPath est une véritable expression xpath. Alors qu'est-ce que cela signifie d'utiliser * comme espace réservé? – Radek
* signifie n'importe quel noeud. Par exemple, dans '/ node/foo/one' et'/node/bar/one', '/ node/*/one' correspond aux deux chemins. –