[英]How to get all html data between 2 div with rails Nokogiri gem
我想尝试使用 Nokogiri gem 获取 2 div 之间的所有 html 数据:
前任:
<div class='job-details__divider'></div>
<h2 class='job-details__second-title'>...</h2>
<div class='job-details__top-reason-to-join-us'>
...
</div>
<h2 class='job-details__second-title'>...</h2>
<div class='job-details__paragraph'>
...
</div>
<h2 class='job-details__second-title'>...</h2>
<div class='job-details__paragraph'>
...
</div>
<h2 class='job-details__second-title'>...</h2>
<div class='job-details__paragraph'>
...
</div>
<div class='jd-page__employer-overview'></div>
结果数据是 2 个类之间的 html 代码(job-details__divider 和 jd-page__employer-overview) 任何人都可以给我一个解决方案? 谢谢!
这可以通过应用节点集交集的Kayessian 方法使用 Nokogiri 的 XPATH 1.0 支持来实现:
$nodeset1[count(. | $nodeset2) = count($nodeset2)]
在您的情况下, $nodeset1
是div[@class='jd-page__employer-overview']
$nodeset2
的所有兄弟姐妹,而$nodeset2
是div[@class='job-details__divider']
所有兄弟姐妹。
doc = Nokogiri::HTML.parse(html)
# nodeset1: All nodes after div.jd-page__employer-overview
nodeset1 = "//div[@class='jd-page__employer-overview']/preceding::node()"
# nodeset2: All nodes following div.job-details__divider
nodeset2 = "//div[@class='job-details__divider']/following::node()"
intersection = doc.xpath("#{nodeset1}[count( . | #{nodeset2}) = count(#{nodeset2})]")
puts intersection.to_html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.