Ben birçok kazıyıcı yazdım ama ben sonsuz scrollers nasıl ele alacağından emin değilim. Bu günlerde çoğu web sitesi vb, Facebook, Pinterest, sonsuz scrollers vardır.web siteleri kazımak
cevap
Selenium'u, twitter veya facebook gibi sonsuz kaydırmalı web sitesini silmek için kullanabilirsiniz.
Adım 1: pip
pip install selenium
Adım 2 kullanılarak selenyum yükleyin: sonsuz kaydırmayı otomatikleştirmek için aşağıdaki kodu kullanabilirsiniz ve kaynak kodu
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
import sys
import unittest, time, re
class Sel(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.base_url = "https://twitter.com"
self.verificationErrors = []
self.accept_next_alert = True
def test_sel(self):
driver = self.driver
delay = 3
driver.get(self.base_url + "https://stackoverflow.com/search?q=stckoverflow&src=typd")
driver.find_element_by_link_text("All").click()
for i in range(1,100):
self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(4)
html_source = driver.page_source
data = html_source.encode('utf-8')
if __name__ == "__main__":
unittest.main()
Adım 3 ayıklamak: Gerekirse verileri yazdırın.
Döngü, 100 kez aşağı kaydırdığımız anlamına mı geliyor? 100 rastgele seçilmiş bir sayıdır. Bu doğru mu? –
@satarupa Haklısınız, döngü 100 kez aşağı kaydırmaktır –
Sonsuz kaydırma özelliğine sahip sitelerin çoğu (Lattyware notları gibi) düzgün bir API'ye sahiptir ve siz de bu işlemi, daha iyi kazıma yerine kullanarak daha iyi sunacaksınız.
Ama kazımak gerekiyorsa
...tür siteler sayfanın dibine ulaştığında sitesinden ek içerik istemek için JavaScript kullanıyor. Tek yapmanız gereken bu ek içeriğin URL'sini bulmak ve onu geri alabilirsiniz. Gerekli URL'yi bulmak, komut dosyasını denetleyerek, Firefox Web konsolunu kullanarak veya bir debug proxy kullanarak yapılabilir. Örneğin, Firefox Web Konsolu'nu açın, Net dışındaki tüm filtre düğmelerini kapatın ve kazımak istediğiniz siteyi yükleyin. Tüm dosyaları yüklendikçe göreceksiniz. Web Konsolu'nu izlerken sayfayı kaydırın ve ek istekler için kullanılan URL'leri göreceksiniz. Sonra bu URL'yi kendiniz isteyebilir ve verilerin hangi formatta olduğunu (muhtemelen JSON) görebilir ve Python betiğinize alabilirsiniz.
Lütfen bunu nasıl yapacağınıza dair somut bir örnek verebilir misiniz? – tatsuhirosatou
Biraz daha ayrıntı ekledim, umarım yardımcı olur! – kindall
ajax kaynağının URL'sini bulmak en iyi seçenek olacaktır, ancak belirli siteler için hantal olabilir. Alternatif olarak QWebKit
gibi başsız bir tarayıcıyı PyQt
'dan kullanabilir ve DOM ağacındaki verileri okurken klavye olayları gönderebilirsiniz. QWebKit
, güzel ve basit bir api'ye sahiptir.
- 1. kazıyın web siteleri
- 2. Web sitesinden numarayı kazımak için regex kullanarak
- 3. Typescript gereksinimleri web siteleri 2.9
- 4. Özel web siteleri için Orchard
- 5. Oyun siteleri öğrenmek için iyi web siteleri ve/veya kitaplar?
- 6. Azure Web Siteleri aracılığıyla Azure Web Siteleri için Ana Bilgisayar Adlarını Ayarlama Powershell
- 7. Python kullanarak web siteleri oluşturmaya başla
- 8. Web siteleri tam HTML kodu gösteriliyor
- 9. Azure web siteleri .NET 4.5.2 kullanılabilirlik tarihi
- 10. Tasarım kalıpları için en iyi web siteleri?
- 11. Azure Web Siteleri: Ücretsiz, Paylaşılan, Ayrılmış Fark?
- 12. Azure web siteleri için ayrılmış giden adresler
- 13. Azure web siteleri belirli bir web projesini dağıtıyor
- 14. Web sayfalarını tek bir web sitesi içinde en hızlı şekilde kazımak için en hızlı yol
- 15. Web siteleri arasında iletişim kurmak (Javascript'i kullanarak veya?)
- 16. linq sql için yüksek trafik var web siteleri için kullanılmalıdır
- 17. WordPress tabanlı web siteleri oluşturmak için iş akışınız nedir?
- 18. Wordpress web siteleri yüklemek için neredeyse bir dakika sürer
- 19. hepsi bir sosyal paylaşım düğmesi javascript web siteleri için?
- 20. Azure web siteleri için uygulama havuzu zaman aşımı
- 21. Azure web siteleri özel başlık göndermeye izin vermiyor mu?
- 22. Azure web siteleri, URL'de bir kolon olduğunda 500 hata atıyor
- 23. MIME türleri yapılandırmak pencereler azure web siteleri php uygulaması
- 24. Azure Web Siteleri ile app_offline kullanmak mümkün mü?
- 25. Azure Web siteleri için Kudu dağıtımları çok yavaş
- 26. Python Mekanize bu siteleri açamaz
- 27. Google Sonuçları kazımak için JSoup kullanma
- 28. Bir facebook oyun verileri kazımak gerekir - yakut
- 29. scrapy bu sayfayı kazımak için çalışıyordu
Buradaki en iyi bahsiniz, bu sitenin API'lerini kullanmaktır - bu, şimdiye kadar, en kolay ve en güvenilir seçenek olacaktır. Bunun dışında, temel olarak tam bir tarayıcı çalıştıran JavaScript gibi işlemler yapmanız gerekecek - bu tür kütüphaneler var. –
bir benzetim gibi geliyor, jscript'in bazı örneklerini işaret edebilir misiniz –