2015-07-13 17 views
5

Selenium'u sayfa oluşturma yetenekleri için (ekran görüntüleri oluşturmak için) Scrapy'e etkili bir şekilde entegre etmenin herhangi bir yolu var mı?Selenyumun Scrapy ile Entegrasyonu

Sadece o zaman scrapy zaten işlenmiş isteğinden sonra WebDriver bir scrapy istek/yanıt URL'yi atmak ve gördüğüm çözümlerin bir sürü sadece bu kapalı çalışır. Bu, iki kat fazla istek oluşturur, birçok şekilde başarısız olur (oturum açma gerektiren siteler, dinamik veya sözde rastgele içerikli siteler vb.) Ve birçok uzantı/katman yazılımı geçersiz kılar.

İkinin birlikte çalışmasının "iyi" bir yolu var mı? Kazıma yaptığım içeriğin ekran görüntülerini oluşturmanın daha iyi bir yolu var mı?

cevap

3

Scrapy'in Downloader Middleware'u kullanın. Basit bir örnek için başka bir soru üzerine cevabımı görün: https://stackoverflow.com/a/31186730/639806

+0

Bunu inceledim ve sorunlardan birini (istekleri ikiye katlayarak) düzeltirken Scrapy'nin sağladığı birçok özelliği atlar. Kullanıcı aracı yapılandırmasını, proxy yapılandırmalarını, başlıkları atıyor ve aramalar arasında sıfır kalıcılık (oturum/çerez yok) sunuyor. Ayrıca, Selenyum'da POST istekleri göndermek imkansızdır, bu yüzden FormRequest'ler gibi şeyler beklenmeyecek veya çok beklenmedik sonuçlar doğuracaktır. – Rejected

+0

Bu şeyleri atlatıyor. Bu çok basit bir örnek, ancak bu şeylerin çoğu Selenium'da (çerezler, başlıklar ve kullanıcı aracı dizisi gibi) kopyalanabilir. Aslında, bu bilginin çoğunu 'process_request 'yöntemine arg olarak sunulan istek bilgilerini kullanarak çekebilirsiniz. Ayrıca, Selenyum üzerinden POST'a ihtiyacınız olmayacak. Selenyum cevabını çektikten sonra bunu "parse" de Scrapy ile yapamazsın. – JoeLinux

+0

FormRequest, Selenium Downloader Middleware tarafından geçilirken "kaçırıldı" ve Selenium tarafından bir driver.get (url) "olarak işlenmez mi? Bu nasıl önlenebilir? – Rejected