หากฉันมีองค์ประกอบหลายอย่างเช่น:
<p>A paragraph <ul><li>Item 1</li><li>Apple</li><li>Orange</li></ul></p>
มีวิธีการในตัวใน Nokogiri ที่จะรับองค์ประกอบ p
ทั้งหมดที่มีข้อความ "Apple" ให้ฉันหรือไม่ (องค์ประกอบตัวอย่างด้านบนจะตรงกัน เป็นต้น)
หากฉันมีองค์ประกอบหลายอย่างเช่น:
<p>A paragraph <ul><li>Item 1</li><li>Apple</li><li>Orange</li></ul></p>
มีวิธีการในตัวใน Nokogiri ที่จะรับองค์ประกอบ p
ทั้งหมดที่มีข้อความ "Apple" ให้ฉันหรือไม่ (องค์ประกอบตัวอย่างด้านบนจะตรงกัน เป็นต้น)
Nokogiri สามารถทำได้ (ตอนนี้) โดยใช้ส่วนขยาย 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"
"
แทนเครื่องหมายคำพูดแบบฝังใช่ไหม
- person the Tin Man; 30.07.2013
doc.at(':contains("bar")')
(เช่น โดยไม่ระบุองค์ประกอบ p
) ฉันจะได้รับเอกสารทั้งหมด
- person crantok; 04.10.2018
doc.at(':contains("foo"):not(:has(:contains("foo")))')
ที่นี่ makandracards.com/makandra/
- person crantok; 04.10.2018
นี่คือ XPath ที่ใช้งานได้:
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>
ลองใช้ XPath นี้:
p = doc.xpath('//p[//*[contains(text(), "Apple")]]')
คุณยังสามารถทำสิ่งนี้ได้อย่างง่ายดายด้วย Nikkou:
doc.search('p').text_includes('bar')