如何,我可以得到以下,一旦所有元素,如:通过机械化获得所有标签追踪信息? (红宝石)
<div id="exemple">
<h2 class="target">foo</h2>
<p>bla bla</p>
<ul>
<li>bar1</li>
<li>bar2</li>
<li>bar3</li>
</ul>
<h4>baz</h4>
<ul>
<li>lot</li>
</ul>
<div>of</div>
<p>possible</p>
<p>tags</p>
<a href="#">after</a>
</div>
我需要检测<h2 class="target">
,并得到所有标签到下一个<h4>
而忽略<h4>
和所有如下标签(如果<h4>
不存在,我必须让所有标签的父结束[此处的<div>
结束])
的内容是动态的和不可预知的唯一的规则就是:我们知道有一个目标,有一个(或结束的元素) 。我需要获得所有标签,并排除所有其他标签。
有了这个为例,我需要得到HTML如下:
<h2 class="target">foo</h2>
<p>bla bla</p>
<ul>
<li>bar1</li>
<li>bar2</li>
<li>bar3</li>
</ul>
这样我就可以得到:target = page.at('#exemple .target')
我知道next_sibling
方法,但我怎么可以测试当前节点的标签的类型?
我想类似的东西当然节点树:
html = ''
while not target.is_a? 'h4'
html << target.inner_html
target = target.next_sibling
我怎样才能做到这一点?
这更多的是一个[标签:XPath]中的或[标签:CSS选择器]的问题比它大约机械化。如果你添加了这些,你会得到更多的观众。 –