能用java相关技术解析Html页面,批量获取页面内容对应的xpath吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了能用java相关技术解析Html页面,批量获取页面内容对应的xpath吗相关的知识,希望对你有一定的参考价值。
使用jsoup可以做到,亲测可用。不仅可获得节点的xpath,还能获得该元素在css中的路径。 参考技术A java解析html页面的话 就看jsoup或htmlunit这两个框架吧。本回答被提问者和网友采纳Java HTML 解析具有无限滚动的页面
【中文标题】Java HTML 解析具有无限滚动的页面【英文标题】:Java HTML Parsing a Page with Infinite Scroll 【发布时间】:2015-11-13 01:35:08 【问题描述】:如果页面具有无限滚动,我如何在 java 中获取页面的 HTML?我目前正在以这种方式抓取页面:
URL url = new URL(stringUrl);
URLConnection con = url.openConnection();
InputStream in = con.getInputStream();
String encoding = con.getContentEncoding();
encoding = encoding == null ? "UTF-8" : encoding;
String html = IOUtils.toString(in, encoding);
Document document = Jsoup.parse(html);
但它不会返回与页面的无限滚动部分相关的任何内容。如何在 HTML 页面上触发此滚动,以便我的 Jsoup 文档包含此部分?
【问题讨论】:
可以给个网址吗 【参考方案1】:@dsh 是对的,内容很可能是通过 AJAX 动态加载的。作为使用真实浏览器(即 selenium webdriver)的替代方案,您可以查看网络流量并确定页面触发的 API 调用。您也许可以直接使用 Jsoup 调用该 Api。然而,内容通常不是 HTML,而是 JSON、XML 或其他格式。这样做可能仍然非常值得,因为使用 webdriver 通常非常缓慢且资源繁重。
【讨论】:
【参考方案2】:无限滚动描述了一种页面不包含内容的技术。一些 JavaScript 代码在浏览器中运行,向服务器发送请求以获取其他内容并将其添加到页面中。当您滚动到可用内容的末尾时,JavaScript 代码会重复该过程:它会发送另一个请求并添加其他内容。
因此,您需要一个带有 JavaScript 引擎的 Web 浏览器,该引擎可以运行 JavaScript 代码并产生导致代码加载内容的事件。
【讨论】:
有什么方法可以从 Java 应用程序中触发这个 javascript? 您可以查看 Selenium Webdriver。有一个 Java API 可以以编程方式控制浏览器。否则,您将需要实际实现将正确解释/执行 Javascript 代码的整个运行时。以上是关于能用java相关技术解析Html页面,批量获取页面内容对应的xpath吗的主要内容,如果未能解决你的问题,请参考以下文章
前一个将jsp页面能用session获取值,再打开一个新的jsp页面用session怎么获取不到??