我有以下html块,我想在这种情况下获得Alabama下的所有城市链接。这是我构建的xpath
//h3/a[contains(text(),'Alabama')]/following::ul/li/a
但上面的xpath匹配太多东西。知道我做错了吗?
<div class="geoUnit">
<h3><a href="http://example.com/" style="background-color: rgba(0, 0, 0, 0);">Alabama</a></h3>
<ul style="background-color: rgba(0, 0, 0, 0);">
<li style="background-color: rgba(0, 0, 0, 0);"><a href="http://example.com/" style="background-color: rgba(0, 0, 0, 0);">Auburn</a></li>
<li><a href="http://example.com/">Birmingham</a></li>
<li><a href="http://example.com/">Dothan</a></li>
<li><a href="http://example.com/">Gadsden</a></li>
<li><a href="http://example.com/">Huntsville</a></li>
<li><a href="http://example.com/">Mobile</a></li>
<li><a href="http://example.com/">Montgomery</a></li>
<li><a href="http://example.com/">Muscle Shoals</a></li>
<li><a href="http://example.com/">Tuscaloosa</a></li>
</ul>
</div>
在这种情况下,我希望将以下内容选为数组。我想提取每个城市链接。我在Java中使用xpath
<li style="background-color: rgba(0, 0, 0, 0);"><a href="http://example.com/" style="background-color: rgba(0, 0, 0,
0);">Auburn</a></li>
<li><a href="http://example.com/">Birmingham</a></li>
<li><a href="http://example.com/">Dothan</a></li>
<li><a href="http://example.com/">Gadsden</a></li>
<li><a href="http://example.com/">Huntsville</a></li>
<li><a href="http://example.com/">Mobile</a></li>
<li><a href="http://example.com/">Montgomery</a></li>
<li><a href="http://example.com/">Muscle Shoals</a></li>
<li><a href="http://example.com/">Tuscaloosa</a></li>
答案 0 :(得分:0)
在这种情况下,我正试图获得阿拉巴马州的所有城市链接。
您的XPath会选择跟随目标标题的所有a
。
但上面的xpath匹配太多东西。
在完整文档中的目标标题后面可能还有其他ul
个元素。在这种情况下,您可以将[1]
附加到XPath中的ul
步骤,以将选择限制在紧随其后的ul
元素中:
//h3/a[contains(text(),'Alabama')]/following::ul[1]/li/a
或者,清理了一下:
//h3[a='Alabama']/following-sibling::ul[1]/li/a
这会将a
元素限制为紧跟在ul
之后的元素。