2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Permettez-moi de rejouer avec plaisir le rôle du protagoniste d'une certaine belle histoire
Jouez le rôle de l'amant avec qui vous avez partagé vos rêves au cours des dernières années
Soyons une chérie qui ne verse plus de larmes d'amour
Faire semblant d'avoir les mêmes scènes qu'avant
Rejouez le rôle du protagoniste d'une belle histoire
Jouez le rôle de l'amant avec qui vous avez partagé vos rêves au cours des dernières années
Même si tu ne comprends pas, tu es toujours seul tard dans la nuit
Porte ton pull silencieux comme si j'étais proche de toi
🎵 陈慧娴《傻女》
Scrapy est un puissant framework de robot d'exploration En utilisant un middleware, les utilisateurs peuvent personnaliser et étendre le comportement du robot. Le middleware fournit un mécanisme de pré- et post-traitement des requêtes et des réponses, permettant aux utilisateurs d'améliorer les fonctionnalités du robot d'exploration sans modifier le code principal.
Dans Scrapy, l'ordre dans lequel les middlewares sont exécutés est déterminé par leur « priorité ». Comprendre et définir correctement la hiérarchie des middlewares est essentiel pour créer un robot d'exploration efficace et maintenable.
Le middleware est un hook de Scrapy qui permet aux utilisateurs d'exécuter du code personnalisé lors du traitement des demandes et des réponses. Les middlewares sont divisés en deux catégories :
Le niveau de middleware détermine l'ordre dans lequel ils sont exécutés. Scrapy utilise une valeur entière pour représenter le niveau du middleware. Plus la valeur est petite, plus le middleware est exécuté tôt.
DOWNLOADER_MIDDLEWARES = {
'myproject.middlewares.CustomDownloaderMiddleware': 543,
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': 400,
'scrapy.downloadermiddlewares.retry.RetryMiddleware': 500,
}
Dans la configuration ci-dessus :
CustomDownloaderMiddleware 的等级为 543
UserAgentMiddleware 的等级为 400
RetryMiddleware 的等级为 500
La séquence d'exécution est la suivante :
UserAgentMiddleware(400)
RetryMiddleware(500)
CustomDownloaderMiddleware(543)
Les requêtes proviennent du moteur, passent par un middleware de niveau inférieur et atteignent finalement le téléchargeur. Lorsque la réponse revient du téléchargeur, elle passe d’abord par un middleware de niveau supérieur et atteint finalement le moteur.
Le middleware du robot d'exploration est situé entre le moteur et le robot d'exploration. Voici un exemple de configuration :
SPIDER_MIDDLEWARES = {
'myproject.middlewares.CustomSpiderMiddleware': 543,
'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware': 50,
'scrapy.spidermiddlewares.offsite.OffsiteMiddleware': 500,
}
Dans la configuration ci-dessus :
CustomSpiderMiddleware 的等级为 543
HttpErrorMiddleware 的等级为 50
OffsiteMiddleware 的等级为 500
La séquence d'exécution est la suivante :
HttpErrorMiddleware(50)
OffsiteMiddleware(500)
CustomSpiderMiddleware(543)
Les requêtes proviennent du moteur, passent par un middleware de niveau inférieur et atteignent finalement le robot d'exploration. Lorsque la réponse revient du robot, elle passe d’abord par un middleware de niveau supérieur et atteint finalement le moteur.
Afin de définir le niveau du middleware, vous devez définir le dictionnaire correspondant dans le fichier de configuration settings.py de Scrapy et spécifier le chemin et le niveau du middleware. Par exemple:
DOWNLOADER_MIDDLEWARES = {
'myproject.middlewares.CustomDownloaderMiddleware': 543,
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': 400,
}
SPIDER_MIDDLEWARES = {
'myproject.middlewares.CustomSpiderMiddleware': 543,
'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware': 50,
}
Dans cet exemple, nous définissons un middleware de téléchargement CustomDownloaderMiddleware et un middleware d'exploration CustomSpiderMiddleware, et définissons leurs niveaux sur 543 respectivement.
Scrapy fournit de nombreux middleware intégrés, chacun avec un niveau par défaut. Voici quelques middlewares de téléchargement courants et leurs niveaux par défaut :
UserAgentMiddleware: 400
RetryMiddleware: 500
RedirectMiddleware: 600
CookiesMiddleware: 700
Pour les middlewares de robots d'exploration, les plus courants incluent :
HttpErrorMiddleware: 50
OffsiteMiddleware: 500
RefererMiddleware: 700
Le middleware est une fonctionnalité puissante du framework Scrapy En définissant correctement le niveau de middleware, vous pouvez contrôler finement le traitement des requêtes et des réponses. Comprendre et utiliser les règles de définition de niveau du middleware peut aider à créer un système d'exploration plus flexible et plus efficace.