我是 HtmlUnit 的新手,我不知道如何获取 [...] 中的文本
我的 html 文件的一部分:
<ul ......somethin....>
<li data-role="list-divider" role="heading" style="font-size:16px;" class="ui-bar-f">
INFORMATION_LINE_1
</li>
<li data-theme="d" class="ui-li ui-btn-icon-right ui-btn-up-d ui-odd-match-column ">
<div class="ui-btn-inner ui-li">
<div class="">
<div class="ui-btn-text">
<a href="/x/cxntay/13113/ndzvsssl/g1" class=" ui-link-inherit ui-link-hover">
<h3 class="ui-li-heading">
<span class="xheader">INFORMATION_LINE_2</span>
<span class="label live">INFORMATION_LINE_3</span>
</h3>
<div class="ui-live-scores">
<span class="team1-scores">
<span class="ui-team-name">INFORMATION_LINE_4</span>
<span style="font-weight:bold">INFORMATION_LINE_5</span>
</span>
<span>INFORMATION_LINE_6</span>
</div>
</a>
</div>
</div>
</div>
</li>
</ul>
现在,我想检索这些标签之间的“INFORMATION_LINE_X”(1,2...6)。
这是我尝试过的:
List<HtmlUnorderedList> ls = (List<HtmlUnorderedList>) page.getByXPath("/ul");
List<DomNode> dls = ls.get(0).getChildNodes();
System.out.println(dls.get(0).getFirstByXPath("//li[@data-role='list-divider']/text()");
我刚刚尝试获取 INFORMATION_LINE_1但它打印了null
。我需要获取所有 INFORMATION_LINES。
最好只使用 XPath,而不是与 HTMLUnit 方法混合使用。像这样的东西应该可以让你获得第一条信息:
HtmlElement e = page.getFirstByXPath("//li[@data-role='list-divider']");
System.out.println(e.asText());
为了获取其他信息行,您应该遵循相同的方法,但更改 XPath 字符串。
请记住,您应该始终通过打印 page.asXml()
的输出来查看代码来调试页面。如果您使用真正的浏览器,您实际上看到的内容与 HTMLUnit 看到的内容并不完全相同。您可能会发现差异,尤其是在页面执行 JavaScript 的情况下。
我是一名优秀的程序员,十分优秀!