2009-09-24 8 views

Répondre

42

Nokogiri peut le faire (maintenant) en utilisant les extensions jQuery CSS:

require 'nokogiri' 

html = ' 
<html> 
    <body> 
    <p>foo</p> 
    <p>bar</p> 
    </body> 
</html> 
' 

doc = Nokogiri::HTML(html) 
doc.at('p:contains("bar")').text.strip 
=> "bar" 
+0

si vous remplacez bar avec un autre texte comme: « google crypté \ » Google Drive \ « cette année », il produit une erreur, des idées sur la façon d'échapper à bien la " personnage ? –

+0

Essayez d'utiliser '"' à la place des guillemets intégrés? –

5

Essayez d'utiliser cette XPath:

p = doc.xpath('//p[//*[contains(text(), "Apple")]]') 
45

Voici un XPath qui fonctionne:

require 'nokogiri' 

doc = Nokogiri::HTML(DATA) 
p doc.xpath('//li[contains(text(), "Apple")]') 

__END__ 
<p>A paragraph <ul><li>Item 1</li><li>Apple</li><li>Orange</li></ul></p> 

espoir qui aide

5

Vous pouvez aussi le faire très facilement avec Nikkou:

doc.search('p').text_includes('bar') 
+0

Hé merci pour avoir suggéré nikkou, j'ai l'impression que cela me fera économiser beaucoup de temps :) – whizcreed

Questions connexes