2013-10-17 26 views
7

Jsoup ile ilgili bir soru: Bir web sitesinden fiyatları getiren bir araç geliştiriyorum. Ancak, bu web sitesinde akış içeriği var. Eğer el ile göz atıyorsam, 20 dakika önce fiyatları görüyorum ve şimdiki fiyatı almak için yaklaşık 3 saniye beklemek zorundayım. Akış bölümünde fiyatları elde edebilmek için Jsoup'da bir çeşit gecikme yapmam mümkün mü? Bu kodu kullanıyorum:Jsoup Gecikme nedeniyle web sitesi

yorum belirtildiği gibi
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

Ve gönderdiğiniz yöntem işe yaramıyor ..? –

+0

Teşekkürler! Belgeyi dolduracak, ancak gecikmeli fiyatlar ile. Sorun şu ki, siteyi başlangıçta yükledikten sonra 3 saniye gibi görünen fiyatlara ihtiyacım var. – Wouter

+2

Fiyatlar gerçekten aynı HTTP bağlantısında mı geliyor? Ya da sayfadaki bazı JS kodları yüklü mü? Bize daha iyi anlatabilmemiz için bize o dermenin bir parçasını gösterebilir misiniz? –

cevap

0

, site sadece Jsoup ile çalışmaz komut dosyası çeşit kullanarak en olasıdır. Jsoup sadece ilk HTML yanıtını aldığından ve herhangi bir javascript yürütmediğinden.

Şimdi nereye gideceğimiz konusunda biraz daha fazla kılavuz vermek istedim. Bu durumlarda en iyi bahis, bu tür siteler için başka bir platforma geçmek. Başsız bir tarayıcı olan HTMLUnit veya HTMLUnit veya Firefox veya Chrome gibi gerçek bir tarayıcı kullanabilen Selenium'a geçiş yapabilirsiniz. Selenium tavsiye ederim eğer HTMLUnit'i HTMLUnit olarak taşımak gerektiğine inanıyorsanız, Selenium'un tüketici tarayıcılarına kıyasla daha az kararlı bir tarayıcı olabileceğini düşünmekteyim. Selenium'u, daha sonra başka bir tarayıcıya geçme seçeneği sunan HTMLUnit sürücüsü ile kullanabilirsiniz.

1

Javascript etkin bir JavaFX WebView kullanabilirsiniz. İki saniye bekledikten sonra içerikleri ayıklayıp JSoup'a aktarabilirsiniz.

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