2013-07-26 3 views
8

Beide Middleware kann Request und Response verarbeiten. Aber was ist der Unterschied?Was ist der Unterschied zwischen Scrapys Spider Middleware und Downloader Middleware?

+4

@MitchWheat: Es mag trivial aussehen, aber es ist eine gute Frage. – Blender

+0

Scheint keinen Programminhalt zu haben: sieht wie eine Frage für eine Suchmaschine aus. –

+1

@MitchWheat: Die Unterscheidung zwischen den beiden ist nicht offensichtlich und wird nicht in der Dokumentation erläutert. Es ist nicht wirklich hilfreich, Downvotes abzuspielen und Stimmen zu schließen, wenn Sie das Framework nicht verstehen. – Blender

Antwort

10

Während sie fast identische Schnittstellen haben, sie dienen unterschiedlichen Zwecken:

  • Downloader Middle ändern Anfragen und Antworten oder generieren Anfragen in Reaktion auf Antworten. Sie interagieren nicht direkt mit Spinnen. Einige Beispiele sind Middlewares, die Cookies, Caching, Proxies, Redirects, das Setzen von User-Agent-Headern usw. implementieren. Sie fügen dem Downloader-System nur Funktionen hinzu.

  • Spider-Middlewares modifizieren Dinge, die an Spinnen übergeben werden, wie Anfragen, Artikel, Ausnahmen und start_requests. Sie teilen einige grundlegende Funktionen mit Downloader-Middlewares, aber sie können keine Anfragen als Reaktion auf Antworten generieren. Sie stehen zwischen den Spinnen und dem Downloader. Ein Beispiel ist das Ausfiltern von Antworten mit schlechten HTTP-Statuscodes.

Einige Middle kann entweder als Download-Middleware-Funktion oder eine Spinne Middleware, aber sie sind oft trivial und wird in einer Kategorie oder der anderen gezwungen werden, sobald Sie komplexere Funktionen hinzufügen.

+0

Danke für die Lösung, die mir sehr hilft. Kannst du bitte die Rolle von DOWNLOADER_MIDDLEWARES hier erläutern. @ Blender –

Verwandte Themen