2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Erlauben Sie mir, die Rolle des Protagonisten einer bestimmten schönen Geschichte fröhlich nachzuspielen
Spielen Sie die Rolle des Liebhabers, mit dem Sie in den letzten Jahren Ihre Träume geteilt haben
Lasst uns ein Schatz sein, der nie wieder Tränen der Liebe vergießt
Vorgeben, die gleichen Szenen wie zuvor zu haben
Spielen Sie die Rolle des Protagonisten einer schönen Geschichte noch einmal
Spielen Sie die Rolle des Liebhabers, mit dem Sie in den letzten Jahren Ihre Träume geteilt haben
Auch wenn du es nicht verstehst, bist du spät in der Nacht immer noch allein
Trage deinen stillen Pullover, als ob ich dir nahe wäre
🎵 陈慧娴《傻女》
Scrapy ist ein leistungsstarkes Crawler-Framework, mit dem Benutzer das Verhalten des Crawlers anpassen und erweitern können. Middleware bietet einen Mechanismus für die Vor- und Nachbearbeitung von Anfragen und Antworten, sodass Benutzer die Funktionalität des Crawlers verbessern können, ohne den Kerncode zu ändern.
In Scrapy wird die Reihenfolge, in der Middleware ausgeführt wird, durch ihre „Priorität“ bestimmt. Das Verständnis und die richtige Einstellung der Middleware-Hierarchie ist für den Aufbau eines effizienten und wartbaren Crawlers von entscheidender Bedeutung.
Middleware ist ein Hook in Scrapy, der es Benutzern ermöglicht, bei der Verarbeitung von Anfragen und Antworten benutzerdefinierten Code auszuführen. Middleware ist in zwei Kategorien unterteilt:
Die Stufe der Middleware bestimmt die Reihenfolge, in der sie ausgeführt werden. Scrapy verwendet einen ganzzahligen Wert, um die Stufe der Middleware darzustellen. Je kleiner der Wert, desto früher wird die Middleware ausgeführt.
DOWNLOADER_MIDDLEWARES = {
'myproject.middlewares.CustomDownloaderMiddleware': 543,
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': 400,
'scrapy.downloadermiddlewares.retry.RetryMiddleware': 500,
}
In der obigen Konfiguration:
CustomDownloaderMiddleware 的等级为 543
UserAgentMiddleware 的等级为 400
RetryMiddleware 的等级为 500
Die Ausführungsreihenfolge ist wie folgt:
UserAgentMiddleware(400)
RetryMiddleware(500)
CustomDownloaderMiddleware(543)
Anforderungen stammen von der Engine, durchlaufen Middleware auf niedrigerer Ebene und erreichen schließlich den Downloader. Wenn die Antwort vom Downloader zurückkehrt, durchläuft sie zunächst die Middleware höherer Ebene und erreicht schließlich die Engine.
Die Crawler-Middleware befindet sich zwischen der Engine und dem Crawler. Hier ist eine Beispielkonfiguration:
SPIDER_MIDDLEWARES = {
'myproject.middlewares.CustomSpiderMiddleware': 543,
'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware': 50,
'scrapy.spidermiddlewares.offsite.OffsiteMiddleware': 500,
}
In der obigen Konfiguration:
CustomSpiderMiddleware 的等级为 543
HttpErrorMiddleware 的等级为 50
OffsiteMiddleware 的等级为 500
Die Ausführungsreihenfolge ist wie folgt:
HttpErrorMiddleware(50)
OffsiteMiddleware(500)
CustomSpiderMiddleware(543)
Anfragen stammen von der Engine, durchlaufen Middleware auf niedrigerer Ebene und erreichen schließlich den Crawler. Wenn die Antwort vom Crawler zurückkehrt, durchläuft sie zunächst die Middleware höherer Ebene und erreicht schließlich die Engine.
Um die Stufe der Middleware festzulegen, müssen Sie das entsprechende Wörterbuch in der Konfigurationsdatei „settings.py“ von Scrapy definieren und den Pfad und die Stufe der Middleware angeben. Zum Beispiel:
DOWNLOADER_MIDDLEWARES = {
'myproject.middlewares.CustomDownloaderMiddleware': 543,
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': 400,
}
SPIDER_MIDDLEWARES = {
'myproject.middlewares.CustomSpiderMiddleware': 543,
'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware': 50,
}
In diesem Beispiel definieren wir eine Downloader-Middleware „CustomDownloaderMiddleware“ und eine Crawler-Middleware „CustomSpiderMiddleware“ und setzen ihre Stufen jeweils auf 543.
Scrapy bietet viele integrierte Middleware mit jeweils einer Standardstufe. Hier sind einige gängige Downloader-Middlewares und ihre Standardstufen:
UserAgentMiddleware: 400
RetryMiddleware: 500
RedirectMiddleware: 600
CookiesMiddleware: 700
Zu den gängigen Crawler-Middleware gehören:
HttpErrorMiddleware: 50
OffsiteMiddleware: 500
RefererMiddleware: 700
Middleware ist eine leistungsstarke Funktion im Scrapy-Framework. Durch die richtige Einstellung der Middleware-Ebene können Sie die Verarbeitung von Anfragen und Antworten genau steuern. Das Verständnis und die Verwendung der Level-Setting-Regeln der Middleware können dabei helfen, ein flexibleres und effizienteres Crawler-System aufzubauen.