Selenium ile yapılmış bir miktar web kazıma yapıyorum (bu yüzden bunun kullanımı söz konusu değil). Bir elemanı tanımlamak zorunda kaldığımda (yani: bir src özniteliği almak için) Selenium iç seçim motorunu kullanmalı mıyım yoksa Jsoup'u kullanmalı mıyım (ki bu çok daha kolay). Yani soru şu: Jsoup'un kullanımı bu kadar önemli bir performans mı? Selenyum mümkün olduğunca sık kullanmalı mıyım? TeşekkürlerSelenium vs Jsoup performansı
cevap
DOM'in önceden JSoup'a ayrıştırılmış olması durumunda, JSoup kullanmasını öneriyorum. Bir "yaşayan" DOM ile uğraşmak zorunda olmadığından selenyumdan çok daha hızlıdır. Selenyum, her zaman herhangi bir işlem yapmadan önce eleman tutamaçlarının hala geçerli olup olmadığını kontrol etmelidir.
Eğer yapabiliyorsanız, selenyumdan tamamen kaçınabilirsiniz, çünkü ciddi kazıma yaparken havai yükü gerçekten farkedilebilir. Ancak, içeriğiniz istemcide JavaScript tarafından dinamik olarak oluşturulmuşsa, Selenium parlar. JavaScript yürütmediğinden JSoup bunu başaramaz.
Zeyilname yolla
Kısa cevap cevap: Duruma göre!
Daha uzun: Kazıma yaptığınız web sitesi javascript tarafından üretiliyorsa ve jenerasyondan sonra değişmiyorsa, özellikle DOM karmaşıksa ve JSoup okumaya uzun sürebilirse, selenyum ile ona erişmek çok iyi olur. JSoup oldukça hızlı olmasına rağmen. Bununla birlikte, JSoup DOM'ı tekrar bellekte oluşturacaktır, bu yüzden DOM'nız çok büyükse, sadece selenyumda değil, aynı zamanda JSoup'ta da bellek tüketen bir şekilde olacaksınız. Bu sizin durumunuzda bir sorun olabilir veya olmayabilir, ancak akılda tutulmaya değer.
Benim kişisel deneyimlerimden, son HTML'yi aldıktan ve bunu tekrar JSoup'de ayrıştırdıktan sonra mümkün olan en kısa sürede selenyum işlemini öldürürüm, çünkü dediğiniz gibi: Jsoup kazıma işlemi, ilgili selenyum seçici yapılardan çok daha kolay İlk oluşturma işleminden sonra DOM'taki herhangi bir değişikliğin kazıma işleminizle alakasız olduğundan eminseniz.
- 1. CALayer performansı vs UIImageView performansı
- 2. Batches vs Tris performansı
- 3. Seçimin performansı vs randint
- 4. Servlet Vs Struts2 Performansı
- 5. DataContractSerializer vs BinaryFormatter performansı
- 6. selenium vs windmill
- 7. Selenium vs Fitnesse
- 8. HashMap vs Anahtar ifadesi performansı
- 9. Tablo vs Sıcaklık Tablo Performansı
- 10. HTTPListener vs Yerel HTTP performansı
- 11. UIGestureRecognizer vs. UITouch Temsilcisi Performansı
- 12. GridView vs DataList vs için Repeater vs ListView 'in performansı
- 13. isDisplayed() vs isVisible() içinde Selenium
- 14. Jsoup
- 15. jQuery seçicileri vs yerel değişkenlerin performansı
- 16. erlang vs jvm (scala) özyineleme performansı
- 17. Oracle için regexp_replace vs translate performansı?
- 18. CALayer vs Layer destekli NSView Performansı
- 19. JavaScript kimliği + sınıf vs. sınıf seçici performansı
- 20. Linq To Sql vs Entity Framework Performansı
- 21. Selenium - Java - çerezleri
- 22. Java - Jsoup
- 23. Jsoup - Metin
- 24. ElasticAraştırma ve vurgulama performansı - düz vs. hızlı vektör vurgulayıcı
- 25. Max havuz katmanı vs Adım performansı ile Convolution
- 26. MongoDB db.eval() 'in javascript shell vs. pymongo'daki performansı
- 27. CSS çoklu çocuk seçici vs tekli etiket seçici performansı
- 28. Postgres jsonb null vs boş nesne sorgulama performansı
- 29. Android JSoup Örnek
- 30. jsoup xpath'i destekliyor mu?
Javascript tarafından dinamik olarak oluşturulan içerik nedeniyle Selenyum'a ihtiyacım var. Benim sorum şu oldu: Selenium ile sayfayı ayrıştırdıktan sonra sayfayı aldım, Selenium ile öğeleri ayrıştırmalı mıyım yoksa Jsoup için bir Belge Nesnesi mi oluşturmalıyım? Cevap için teşekkürler! – Fxxxx
Bunun gibi bir şey kullanmayı düşünüyorum ** Document doc = Jsoup.parse (webDriver.getPageSource()); **. _Selenium WebElements_ üzerinde döngü yapan bazı performans sorunlarıyla uğraşıyorum, benzer bir çözüm uyguladınız mı? Performans sorunlarınızı çözdü mü? – Hoper
@Hoper Yine, buna bağlı. HTML'yi iki kez etkin bir şekilde ayırmak bazı ek yükleri getirir. Selenium WebElements üzerindeki döngü genişse, yine de faydalı olabilir. Özellikle, DOM, WebElements üzerinden dönerken değişirse, zamanlama sorunlarına hızlı bir şekilde girersiniz. Her iki varyantı programlamak gerçekten zor olmadığından, sonuçları ölçmeniz ve daha hızlı bir çözümle devam etmeniz gerekebilir. – luksch