2013-07-26 10 views
8

Entrambi i middleware possono elaborare richiesta e risposta. Ma qual è la differenza?Qual è la differenza tra il middleware di Scrapy's spider e il middleware del downloader?

+4

@MitchWheat: Può sembrare banale, ma è una buona domanda. – Blender

+0

Non sembra avere alcun contenuto di programmazione: sembra una domanda per un motore di ricerca. –

+1

@MitchWheat: la distinzione tra i due non è ovvia e non è spiegata nella documentazione. Scegliere downvotes e close vote non è di grande aiuto se non si comprende il framework coinvolto. – Blender

risposta

10

Mentre hanno interfacce quasi identici, hanno scopi differenti: middleware

  • Downloader modificano richieste e risposte o generano le richieste in risposta a risposte. Non interagiscono direttamente con i ragni. Alcuni esempi sono i middleware che implementano cookie, cache, proxy, reindirizzamenti, impostazione di intestazioni utente-agente, ecc. Aggiungono solo funzionalità al sistema di downloader.

  • Il middleware Spider modifica le cose che entrano ed escono da spider, come richieste, articoli, eccezioni, e start_requests. Condividono alcune funzionalità di base con i middleware del downloader, ma non possono generare richieste in risposta alle risposte. Si frappongono tra gli spider e il downloader. Un esempio è il filtraggio delle risposte con codici di stato HTTP errati.

Alcuni middleware in grado di funzionare sia come middleware downloader o un middleware ragno, ma sono spesso banali e saranno costretti in una categoria o l'altra volta si aggiunge la funzionalità più complessa.

+0

Grazie per la soluzione che mi aiuta molto. Puoi per favore elaborare il ruolo di DOWNLOADER_MIDDLEWARES qui. @ Blender –

Problemi correlati