Image explaining the data to be extracted
我正在尝试从 web page 中提取数据(图中红色标记)使用HtmlUnit java 的库。但我无法获得该特定值。
WebClient webClient = new WebClient(BrowserVersion.CHROME);
Thread.sleep(5000);
HtmlPage page = webClient.getPage("https://earth.nullschool.net/#current/wind/isobaric/500hPa/orthographic=-283.71,14.19,2183/loc=76.850,11.440");
Thread.sleep(5000);
System.out.println(page.asXml());
我检查了控制台窗口上得到的 html。它不包含该值。
<p>
<span id="location-wind" class="location">
</span>
<span id="location-wind-units" class="location text-button">
</span>
</p>
最佳答案
因为这些是通过 JavaScript 填写的。当您加载页面时,这些字段最初为空。您可以通过查看源代码并搜索 id="location
来检查这一点。
页面发出两个额外的 HTTP 请求来获取动态数据:
https://earth.nullschool.net/data/earth-topo.json?v3
https://gaia.nullschool.net/data/gfs/current/current-wind-isobaric-500hPa-gfs-0.5.epak
此数据中的某个位置(合计大小约为 1.2 MB)是您要查找的数据。最好的选择是使用一种工具(可能是在线工具)将 JSON 转换为 Java 对象,或者研究 JSON 并编写代码来获取您想要的特定数据。
也就是说,如果该数据位于 JSON 中,对此我并不确信。 EPAK 文件似乎是某种嵌入了 JSON 的二进制数据,但我无法确定数据是否在其中。
另一种方法是使用 Selenium,让它为您解析页面,并从那里检索数据。
关于java - 在java中使用HtmlUnit解析动态网页不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49761133/