我正在尝试编写一个小应用程序来从维基百科页面中提取内容。当我第一次想到是否可以时,我认为我可以只使用 XPath 来定位包含内容的 div,但在研究了 Wikipedia 如何构建他们的文章后,我很快发现这并不是那么容易。当我获取页面时分离内容的最佳方法是选择两组之间的内容h2
tags.
例子:<h2>Title</h2> <div>Some Content</div> <h2>Title</h2>
在这里我想得到div
标题集之间。我尝试用 XPath 来做这件事,但一点运气都没有。我将更多地研究 XPath,因为我认为这是我需要用来实现我想要的东西,但在我深入研究它之前,我想听听你们对此的看法。 XPath 是正确的方法还是有其他更简单的选择?如果这有什么区别的话,我用 C# 编写应用程序。
是的,您使用 XPath 的方向是正确的——它非常适合选择 XML 文档的某些部分。
例如,对于此 XML,
<r>
<h2>Title A</h2>
<div>Some Content</div>
<div>More Content</div>
<h2>Title B</h2>
</r>
这个 XPath,
//div[preceding-sibling::h2 = 'Title A' and following-sibling::h2 = 'Title B']
将选择此内容,
<div>Some Content</div>
<div>More Content</div>
两者之间h2
标题,按要求。
更新以解决OP的自我回答:
对于这个新的 XML 示例,
<div>
<h2><span>Summary</span></h2>
<p>Paragraph</p>
<ul>
<li>List1</li>
<li>List2</li>
<li>List3</li>
</ul>
<p>Paragraph</p>
<h2><span>Location</span></h2>
<p>Paragraph</p>
</div>
我上面提供的 XPath 可以很容易地进行调整,
//*[preceding-sibling::h2 = 'Summary' and following-sibling::h2 = 'Location']
选择此 XML,
<p>Paragraph</p>
<ul>
<li>List1</li>
<li>List2</li>
<li>List3</li>
</ul>
<p>Paragraph</p>
按照要求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)