Ho scritto molti scraper ma non sono veramente sicuro di come gestire gli scrollers infiniti. In questi giorni la maggior parte dei siti Web ecc., Facebook, Pinterest ha scrollers infiniti.Scrape siti Web con scorrimento infinito
risposta
È possibile utilizzare il selenio per eliminare il sito Web a scorrimento infinito come Twitter o Facebook.
Fase 1: Installare Selenio usando pip
pip install selenium
Fase 2: utilizzare il codice qui sotto per automatizzare scorrimento infinito e estrarre il codice sorgente
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()
Passo 3: Stampare i dati, se necessario.
Il ciclo significa che scorriamo verso il basso 100 volte? dove 100 è un numero scelto a caso. È giusto? –
@satarupa Hai ragione il ciclo è scorrere verso il basso 100 volte –
La maggior parte dei siti che hanno lo scrolling infinito (come le note di Lattyware) hanno anche un'API corretta, e sarà probabilmente meglio servito usando questo piuttosto che lo scraping.
Ma se si deve raschiare ...
Tali siti utilizzano Javascript per richiedere contenuti aggiuntivi dal sito quando si raggiunge la parte inferiore della pagina. Tutto quello che devi fare è capire l'URL di quel contenuto aggiuntivo e puoi recuperarlo. È possibile calcolare l'URL richiesto controllando lo script, utilizzando la console Web di Firefox o utilizzando uno debug proxy.
Ad esempio, aprire la console Web di Firefox, disattivare tutti i pulsanti dei filtri tranne Rete e caricare il sito che si desidera analizzare. Vedrai tutti i file mentre vengono caricati. Scorri la pagina mentre guardi la console Web e vedrai gli URL utilizzati per le richieste aggiuntive. Quindi puoi richiedere tu stesso quell'URL e vedere in che formato sono i dati (probabilmente JSON) e inserirli nel tuo script Python.
Puoi per favore dare un esempio concreto di come farlo? – tatsuhirosatou
Ho aggiunto qualche dettaglio in più, spero che aiuti! – kindall
Trovare l'URL della fonte Ajax sarà l'opzione migliore ma può essere ingombrante per alcuni siti. In alternativa è possibile utilizzare un browser headless come QWebKit
da PyQt
e inviare eventi di tastiera durante la lettura dei dati dall'albero DOM. QWebKit
ha una bella e semplice api.
- 1. Scorrimento ionico multiplo entrambi con scorrimento infinito
- 2. Impaginazione/Scorrimento infinito con Firebase
- 3. Scrape le pagine Web in tempo reale con Node.js
- 4. Scorrimento infinito e callback
- 5. Scorrimento orizzontale infinito UIScrollView
- 6. Scorrimento infinito UIPageViewController
- 7. Usabilità di uno scorrimento infinito/infinito
- 8. Utilizzo siti Web di siti Web di Azure per più siti Web con le stesse DLL
- 9. Scorrimento infinito in django
- 10. Concetti di scorrimento loop infinito
- 11. Problema Android: visualizzazione con scorrimento infinito
- 12. Scorrimento infinito angolare materiale con richiesta $ http
- 13. isotopo e scorrimento infinito con attivazione manuale
- 14. Looping continuo Page (non infinito di scorrimento)
- 15. Scrape e converti sito Web in HTML?
- 16. Jquery, Jcarousel scorrimento continuo infinito
- 17. Siti web e applicazioni web?
- 18. NodeJS più siti Web
- 19. Struttura in git con più siti web
- 20. eseguibili Editoria e siti web con NuGet
- 21. La migliore griglia open source con scorrimento uniforme e infinito
- 22. iPad siti web con "-webkit-overflow-" scrolling: tocco;" lo scorrimento appena smette di funzionare a volte ...
- 23. Scorrimento infinito - setContentOffset: arresta decelerazione di UIScrollView
- 24. Scrape sito Web protetto da password in R
- 25. Scorrimento infinito con muratura in woocommerce non funzionante
- 26. <Select> widget con dropdown infinito di scorrimento
- 27. Problema di scorrimento infinito utilizzando EndlesScroll Android
- 28. Come ricreare un'anteprima dell'immagine da siti Web esterni?
- 29. Codifica scrape Node.JS?
- 30. crittografia web.config per siti Web
La soluzione migliore è utilizzare le API di quel sito, che sarà di gran lunga l'opzione più semplice e affidabile. Oltre a questo, dovrai elaborare JavaScript, che in pratica significa eseguire un browser completo - tali librerie esistono. –
suona come una simulazione, puoi indicare alcuni esempi di gestione di jscript –