Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用HtmlUnit通过xpath提取内容_Xpath_Htmlunit - Fatal编程技术网

无法使用HtmlUnit通过xpath提取内容

无法使用HtmlUnit通过xpath提取内容,xpath,htmlunit,Xpath,Htmlunit,我正试图从这个马耳他新闻页面中提取标题 使用以下XPath html/body/table/tbody/tr[2]/td/table/tbody/tr[4]/td/table/tbody/tr[1]/td[1]/table/tbody/tr/td/table/tbody/tr/td[2]/table[3]/tbody/tr[1]/td/h1 (虽然不漂亮,但这个Xpath是由Chrome生成的,因为缺少元素ID,所以很有意义) 我正在用Java编程提取标题。这是密码。我使用相同的代码(显然使用

我正试图从这个马耳他新闻页面中提取标题

使用以下XPath

html/body/table/tbody/tr[2]/td/table/tbody/tr[4]/td/table/tbody/tr[1]/td[1]/table/tbody/tr/td/table/tbody/tr/td[2]/table[3]/tbody/tr[1]/td/h1

(虽然不漂亮,但这个Xpath是由Chrome生成的,因为缺少元素ID,所以很有意义)

我正在用Java编程提取标题。这是密码。我使用相同的代码(显然使用了不同的xpath)提取了新闻内容和文章日期

但是,它为中提到的xpath提供了一个空指针

((doElement)page.getFirstByXPath(“html/body/table/tbody/tr[2]/td/table/tbody/tr[4]/td/table/tbody/tr[1]/td[1]/table/tbody/tr/td/table/tbody/tr/td[2]/table[3]/tbody/tr[1]/td/h1”)。asText()

没有找到DomeElement,我确信它在那里,毕竟Chrome创建了XPath

这可能是什么原因


提前谢谢

没那么容易。你应该:

  • 请参阅它实际使用
    Page.asXml()创建的文本HTMLUnit
  • 更正您正在遍历的XPath,以匹配在上一步中输出的HTMLUnit

  • 谢谢你的提示。有效的Xpath实际上是/html/body/table/tbody/tr[2]/td/table/tbody/tr[4]/td/table/tbody/tr[1]/td[1]/table/tbody/tr/td/table/tbody/tr/td[2]/table/table[2]/tbody/tr[1]/td/h1。最后,不是表[3],而是表/表[2]。不知道为什么Chrome首先给了我第一个Xpath!再次感谢!
    public static void main (String[] args) {
            WebClient webClient = new WebClient();
            HtmlPage page = null;
            try {
                page = webClient.getPage("http://www.maltarightnow.com/?module=news&at=Inawgurat+%26%23289%3Bnien+%26%23289%3Bdid+f%27Marsalforn&t=a&aid=99839603&cid=19");
            } catch (FailingHttpStatusCodeException | IOException e) {
            }
    
            String text = ((DomElement)page.getFirstByXPath("html/body/table/tbody/tr[2]/td/table/tbody/tr[4]/td/table/tbody/tr[1]/td[1]/table/tbody/tr/td/table/tbody/tr/td[2]/table[3]/tbody/tr[1]/td/h1")).asText();
            System.out.println(text);
        }