gpt4 book ai didi

java - 如何获取完全加载页面的 html(使用 javascript)作为 java 中的输入?

转载 作者:太空狗 更新时间:2023-10-29 13:52:53 25 4
gpt4 key购买 nike

我需要解析页面,一切正常,除了页面上的一些元素是动态加载的。我将 jsoup 用于静态元素,然后当我意识到我确实需要动态元素时,我尝试了 javafx。我在 stackoverflow 上阅读了很多答案,并且有很多使用 javafx WebEngine 的建议。所以我以这段代码结束。

@Override
public void start(Stage primaryStage) {
WebView webview = new WebView();
final WebEngine webengine = webview.getEngine();
webengine.getLoadWorker().stateProperty().addListener(
new ChangeListener<State>() {
public void changed(ObservableValue ov, State oldState, State newState) {
if (newState == Worker.State.SUCCEEDED) {
Document doc = webengine.getDocument();
//Serialize DOM
OutputFormat format = new OutputFormat (doc);
// as a String
StringWriter stringOut = new StringWriter ();
XMLSerializer serial = new XMLSerializer (stringOut, format);
try {
serial.serialize(doc);
} catch (IOException e) {
e.printStackTrace();
}
// Display the XML
System.out.println(stringOut.toString());
}
}
});
webengine.load("http://detail.tmall.com/item.htm?spm=a220o.1000855.0.0.PZSbaQ&id=19378327658");
primaryStage.setScene(new Scene(webview, 800, 800));
primaryStage.show();
}

我从 org.w3c.dom.Document 制作了字符串并打印出来。但这也没有用。 primaryStage.show() 向我展示了完全加载的页面(我需要在页面上呈现的元素),但在 html 代码中(在输出中)没有我需要的元素。

这是我处理该问题的第三天,当然缺乏经验是我的主要问题,但我不得不说:我被卡住了。这是我看完java完全引用后的第一个java项目。我这样做是为了获得一些真实世界的经验(并且为了好玩)。我想制作中文“ebay”的解析器。

这是问题和我的测试用例:

http://detail.tmall.com/item.htm?spm=a220o.1000855.0.0.PZSbaQ&id=19378327658需要动态加载折扣“129.00”

http://item.taobao.com/item.htm?spm=a230r.1.14.67.MNq30d&id=22794120348需要“15.20”

如您所见,如果您首先使用浏览器查看此页面,您会看到原价,大约一秒钟后 - 折扣。

是否有可能从 html 页面获得动态折扣?我需要解析的其他元素是静态的。接下来要尝试什么:另一个用 javascript 或其他方法呈现 html 的库?我真的需要一些建议,不想放弃。

最佳答案

Worker.State.SUCCEEDED 之后返回的 DOM 模型应该已经被 javascript 处理过。

您的代码在 FX 7u40 和 8.0 dev 上经过测试对我有用。我在日志中看到下一个输出:

<DIV id="J_PromoBox"><EM class="tb-promo-price-type">夏季新品</EM><EM class="tm-yen">¥</EM>    
<STRONG class="J_CurPrice">129.00</STRONG></DIV>

这是动态加载的框,其中包含您查找的数据 (129.00)。

您可能希望将您的 JDK 升级到 7u40 或重新访问您的日志解析算法。

关于java - 如何获取完全加载页面的 html(使用 javascript)作为 java 中的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18033379/

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