gpt4 book ai didi

java - XPath 无法通过 id 找到表

转载 作者:行者123 更新时间:2023-12-02 08:37:59 26 4
gpt4 key购买 nike

我正在使用 WATIJ 进行一些屏幕抓取,但它无法读取 HTML 表(抛出 NullPointerExceptions 或 UnknownObjectExceptions)。为了克服这个问题,我读取了 HTML 并通过 JTidy 运行它以获得格式良好的 XML。

我想用XPath解析它,但它找不到<table ...>通过id即使该表在 XML 中清晰可见。这是我的代码:

XPathFactory factory=XPathFactory.newInstance();  
XPath xPath=factory.newXPath();
InputSource inputSource = new InputSource(new StringReader(tidyHtml));
XPathExpression xPathExpression=xPath.compile("//table[@id='searchResult']");
String expression = "//table[@id='searchResult']";
String table = xPath.evaluate(expression, inputSource);
System.out.println("table = " + table);

该表是一个空字符串。

但是该表位于 XML 中。如果我打印 tidyHtml显示的字符串

 <table
class="ApptableDisplayTag"
id="searchResult"
style="WIDTH: 99%">

我以前没有使用过 XPath,所以也许我遗漏了一些东西。

谁能帮我纠正一下吗?谢谢。

最佳答案

我对 JTidy 一无所知,但对于 WATIJ,我相信您收到 NullPointer 和 UnknownObject 异常的原因是因为您的 XPATH 使用小写节点。假设您使用“//table[@id='searchResult']”作为 xpath 在 WATIJ 中查找表。这实际上不起作用,因为“table”是小写的。对于 WATIJ,您需要将所有节点名称都大写,例如:“//TABLE[@id='searchResult']”。举个例子,假设您想使用 WATIJ 打印该表的行数,您需要执行以下操作:

import watij.runtime.ie.IE;import static watij.finders.SymbolFactory.*;public class Example {    public static void main(String[] args) {        IE ie = new IE();        ie.start("your_url_goes_here");        System.out.println(ie.table(xpath, "//TABLE[@id='searchResult']").rowCount());        ie.close();    }}

此代码或答案可能不正确,因为我今天才开始使用 WATIJ。尽管我确实在使用 xpath 时遇到了同样的问题。我花了几个小时的搜索/测试才注意到所有 xpath 在此页面上的大小写:WATIJ User Guide一旦我更改了 xpath 中的大小写,WATIJ 就能够找到对象,因此这也应该适合您。

关于java - XPath 无法通过 id 找到表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/876240/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com