2015-07-13 22 views
5

C'è un modo per integrare efficacemente Selenium in Scrapy per le sue capacità di rendering della pagina (per generare schermate)?Integrare il selenio con Scrapy

Un sacco di soluzioni che ho visto solo gettare un URL di richiesta/risposta Scrapy a WebDriver dopo aver già elaborato la richiesta del Scrapy, e poi basta lavora fuori questo. Questo crea il doppio delle richieste, fallisce in molti modi (siti che richiedono login, siti con contenuti dinamici o pseudo-casuali, ecc.) E invalida molte estensioni/middleware.

Esiste un modo "buono" per far lavorare insieme i due? C'è un modo migliore per generare screenshot del contenuto che sto provando?

risposta

3

Utilizzare Scrapy's Downloader Middleware. Vedere la mia risposta su un'altra domanda per un semplice esempio: https://stackoverflow.com/a/31186730/639806

+0

Ho visto questo e, mentre risolve uno dei problemi (raddoppiando le richieste), ignora molte funzionalità fornite da Scrapy. Elimina la configurazione di user-agent, le configurazioni proxy, le intestazioni e offre zero persistenza tra le chiamate (nessuna sessione/cookie). Inoltre, è impossibile inviare richieste POST in Selenium, quindi cose come FormRequests si interromperanno o avranno risultati inaspettati. – Rejected

+0

Ignora quelle cose. È un esempio molto semplice, ma molte di queste cose possono essere duplicate in Selenium (come cookie, intestazioni e stringa user-agent). Infatti, la maggior parte di queste informazioni è possibile utilizzare le informazioni sulla richiesta che sono disponibili come argomento per il metodo 'process_request'. Inoltre, non sarà necessario eseguire il POST tramite Selenium. Nessuna ragione per cui non puoi farlo attraverso Scrapy in 'analisi' dopo aver tirato la risposta al selenio. – JoeLinux

+0

Il FormRequest non sarebbe stato "dirottato" dal Selenium Downloader Middleware durante il suo passaggio e quindi elaborato come un driver.get (url) "da Selenium? Come potrebbe essere impedito? – Rejected