2013-10-17 33 views
7

有关Jsoup的问题:我正在构建一个从网站获取价格的工具。但是,这个网站有流媒体内容。如果我手动浏览,我会看到20分钟前的价格,并且需要等待大约3秒才能获得当前价格。我有什么办法可以让Jsoup能够在流媒体部分获得价格方面的某种延迟?我使用此代码:由于流式传输网站造成的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(); 
+0

而你发布的方法不起作用..? –

+0

谢谢!它将填写文件,但只有延迟价格。问题是,我需要网站在最初加载页面3秒后显示的价格。 – Wouter

+2

价格实际上是在同一个HTTP连接中?或者它是由页面中的一些JS代码加载的?你能向我们展示这一流的一部分,只是为了更好地理解? –

回答

0

正如在评论中提到,该网站是最有可能使用某种类型的脚本,就不会与Jsoup的工作。由于Jsoup只是获得最初的HTML响应,并且不执行任何JavaScript。

我想给你更多的指导,但现在要去哪里。在这种情况下,最好的办法就是转移到这些类型网站的另一个平台。您可以迁移到HTMLUnit这是一个无头浏览器,或Selenium,它可以使用HTMLUnit或Firefox或Chrome等真实浏览器。如果您认为您将需要移过HTMLUnit,那么我会推荐Selenium,因为与Selenium可支持的消费者浏览器相比,HTMLUnit有时可能不够稳定。您可以使用带有HTMLUnit驱动程序的Selenium,以便以后可以无缝移动到其他浏览器。

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);