流媒体网站导致的Jsoup延迟

时间:2013-10-17 16:28:15

标签: html browser jsoup

关于Jsoup的问题:我正在构建一个从网站上获取价格的工具。但是,该网站有流媒体内容。如果我手动浏览,我会看到20分钟之前的价格,并且必须等待大约3秒才能获得当前价格。有什么方法可以在Jsoup中做出某种延迟,以便能够在流媒体部分获得价格吗?我正在使用此代码:

conn = Jsoup.connect(link).userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36");

conn.timeout(5000);

doc = conn.get();

2 个答案:

答案 0 :(得分:1)

您可以在启用了javascript的情况下使用JavaFX WebView。等待两秒后,您可以提取内容并将它们传递给JSoup。

(After loading your url into your WebView using the example above)
String text=view.getEngine() executeScript("document.documentElement.outerHTML");
Document doc = Jsoup.parse(html);

答案 1 :(得分:0)

正如评论中所提到的,该网站最有可能使用某种类型的脚本,这些脚本无法与Jsoup一起使用。因为Jsoup只是获得初始HTML响应并且不执行任何javascript。

我想给你一些指导,但现在要去哪里。在这些情况下,最好的选择是转移到这些类型网站的另一个平台。您可以迁移到HTMLUnit这是一个无头浏览器,或Selenium可以使用HTMLUnit或真正的浏览器,如Firefox或Chrome。如果您认为自己需要超越HTMLUnit,我会推荐Selenium,因为与Selenium可以支持的消费者浏览器相比,HTMLUnit有时可能不太稳定。您可以将Selenium与HTMLUnit驱动程序一起使用,为您提供以后无缝移动到另一个浏览器的选项。