Table des matières
#🎜🎜 #from scrapy_redis.spiders import RedisSpider
Maison développement back-end Tutoriel Python Crawlers distribués dans Scrapy et méthodes pour améliorer l'efficacité de l'exploration des données

Crawlers distribués dans Scrapy et méthodes pour améliorer l'efficacité de l'exploration des données

Jun 22, 2023 pm 09:25 PM
scrapy 分布式爬虫 数据抓取效率

Scrapy est un framework de robot d'exploration Web Python efficace qui peut écrire des programmes de robot d'exploration rapidement et de manière flexible. Cependant, lors du traitement de grandes quantités de données ou de sites Web complexes, les robots d'exploration autonomes peuvent rencontrer des problèmes de performances et d'évolutivité. À l'heure actuelle, des robots d'exploration distribués doivent être utilisés pour améliorer l'efficacité de l'exploration des données. Cet article présente les robots d'exploration distribués dans Scrapy et les méthodes permettant d'améliorer l'efficacité de l'exploration des données.

1. Qu'est-ce qu'un robot distribué ?

Dans l'architecture traditionnelle des robots d'exploration à machine unique, tous les robots d'exploration s'exécutent sur la même machine. Lorsqu'ils sont confrontés à de grandes quantités de données ou à des tâches d'exploration à haute pression, les performances de la machine sont souvent limitées. Les robots d'exploration distribués répartissent les tâches du robot d'exploration sur plusieurs machines pour traitement. Grâce à l'informatique et au stockage distribués, la charge sur une seule machine est réduite, améliorant ainsi l'efficacité et la stabilité du robot d'exploration.

Les robots d'exploration distribués dans Scrapy sont généralement implémentés à l'aide du cadre de planification distribuée open source Distributed Scrapy (DSC en abrégé). DSC distribue les programmes d'exploration Scrapy sur plusieurs machines pour un traitement parallèle et résume uniformément les résultats au nœud de planification central.

2. Comment implémenter un robot distribué ?

1. Installer Distributed Scrapy

Exécutez la commande suivante pour installer DSC :

pip install scrapy_redis

pip install pymongo# 🎜🎜#

2. Modifier le fichier de configuration Scrapy

Ajoutez la configuration suivante dans le fichier settings.py du projet Scrapy :

Utiliser le planificateur redis

SCHEDULER = "scrapy_redis.scheduler.Scheduler"

Utiliser la stratégie de déduplication redis

DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"#🎜 🎜# # 🎜🎜 #Si vous n'effacez pas les enregistrements Redis, vous pouvez suspendre/reprendre l'exploration

SCHEDULER_PERSIST=True

Définir les paramètres de connexion Redis

REDIS_HOST ='localhost'# 🎜🎜#REDIS_PORT=6379

3. Écrivez le code du robot


Dans le programme du robot Scrapy, vous devez modifier la méthode de demande de démarrage et utiliser le démarrage méthode de scrapy-redis :

encoding:utf-8

import scrapy,re,json

from ..items import DouyuItem

#🎜🎜 #from scrapy_redis.spiders import RedisSpider

class DouyuSpider(RedisSpider):

# 爬虫名字
name = 'douyu'
# redis-key,从redis中pop数据进行爬取
redis_key = 'douyu:start_urls'

def parse(self, response):
    # scrapy爬虫代码
Copier après la connexion

4. Démarrez le service Redis

Exécutez la commande suivante dans le terminal pour démarrer le service Redis : #🎜🎜 #

redis-server

5. Démarrer Distributed Scrapy

Entrez la commande suivante dans le terminal pour démarrer le DSC. node:

scrapy crawl douyu -s JOBDIR=job1

Parmi eux, job1 peut être un nom personnalisé, qui est utilisé par DSC pour enregistrer l'état du robot.

3. Optimiser le robot d'exploration Scrapy

Scrapy fournit de nombreuses méthodes pour optimiser l'efficacité du robot d'exploration s'il est utilisé avec des robots d'exploration distribués, l'efficacité de l'exploration des données peut être encore améliorée.

1. Utiliser CrawlerRunner

CrawlerRunner nécessite une classe Twisted pour étendre l'application. Par rapport à la simple exécution d'un fichier Python, cela vous permet d'exécuter plusieurs robots d'exploration simultanément dans le même processus sans utiliser plusieurs processus ou plusieurs machines. Cela peut faciliter la gestion des tâches.

La façon d'utiliser CrawlerRunner est la suivante :

from twisted.internet import réacteur, différer

from scrapy.crawler import CrawlerRunner

from scrapy. utils.project import get_project_settings

from my_spider.spiders.my_spider import MySpider

runner = CrawlerRunner(get_project_settings())


@defer.inlineCallbacks
def crawl() :

yield runner.crawl(MySpider)
reactor.stop()
Copier après la connexion

crawl()

reactor.run()

2. Réduire la priorité de téléchargement du middleware

If. nécessaire Pour traiter des données volumineuses ou complexes dans le middleware de téléchargement, vous pouvez utiliser CONCURRENT_REQUESTS_PER_DOMAIN pour réduire la priorité du middleware de téléchargement :


CONCURRENT_REQUESTS_PER_DOMAIN = 2

DOWNLOAD_DELAY = 0.5

DOWNLOADER_MIDDLEWARES = { # 🎜🎜 # 'myproject.middlewares.MyCustomDownloaderMiddleware' : 543,

}

3. Ajustez les paramètres CONCURRENT_REQUESTS et DOWNLOAD_DELAY


CONCURRENT_REQUESTS indique le nombre maximum de demandes que chaque nom de domaine peut gérer simultanément, qui peut être raisonnablement ajusté en fonction de la configuration de la machine et des exigences de la tâche.

DOWNLOAD_DELAY représente le délai entre chaque requête. L'efficacité du robot peut être améliorée en augmentant le délai ou les requêtes asynchrones.

4. Résumé

Le robot distribué de Scrapy peut nous aider à traiter rapidement de grandes quantités de données et à améliorer l'efficacité du robot. Dans le même temps, l'efficacité du robot d'exploration peut être encore améliorée en réduisant la priorité du middleware de téléchargement, en ajustant le nombre de coroutines et en augmentant le délai de requête. Le robot d'exploration distribué est l'une des fonctions importantes de Scrapy Learning, il peut nous permettre de gérer facilement diverses tâches de robot.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Scrapy implémente l'exploration et l'analyse des articles du compte public WeChat Scrapy implémente l'exploration et l'analyse des articles du compte public WeChat Jun 22, 2023 am 09:41 AM

Scrapy met en œuvre l'exploration d'articles et l'analyse des comptes publics WeChat. WeChat est une application de médias sociaux populaire ces dernières années, et les comptes publics qui y sont exploités jouent également un rôle très important. Comme nous le savons tous, les comptes publics WeChat sont un océan d’informations et de connaissances, car chaque compte public peut publier des articles, des messages graphiques et d’autres informations. Ces informations peuvent être largement utilisées dans de nombreux domaines, tels que les reportages médiatiques, la recherche universitaire, etc. Ainsi, cet article expliquera comment utiliser le framework Scrapy pour explorer et analyser les articles du compte public WeChat. Scr

Méthode d'implémentation de chargement asynchrone Scrapy basée sur Ajax Méthode d'implémentation de chargement asynchrone Scrapy basée sur Ajax Jun 22, 2023 pm 11:09 PM

Scrapy est un framework d'exploration Python open source qui peut obtenir rapidement et efficacement des données à partir de sites Web. Cependant, de nombreux sites Web utilisent la technologie de chargement asynchrone Ajax, ce qui empêche Scrapy d'obtenir directement des données. Cet article présentera la méthode d'implémentation de Scrapy basée sur le chargement asynchrone Ajax. 1. Principe de chargement asynchrone Ajax Chargement asynchrone Ajax : Dans la méthode de chargement de page traditionnelle, une fois que le navigateur a envoyé une requête au serveur, il doit attendre que le serveur renvoie une réponse et charge la page entière avant de passer à l'étape suivante.

Analyse de cas Scrapy : Comment explorer les informations de l'entreprise sur LinkedIn Analyse de cas Scrapy : Comment explorer les informations de l'entreprise sur LinkedIn Jun 23, 2023 am 10:04 AM

Scrapy est un framework d'exploration basé sur Python qui peut obtenir rapidement et facilement des informations pertinentes sur Internet. Dans cet article, nous utiliserons un cas Scrapy pour analyser en détail comment explorer les informations d'une entreprise sur LinkedIn. Déterminer l'URL cible Tout d'abord, nous devons indiquer clairement que notre cible est les informations de l'entreprise sur LinkedIn. Par conséquent, nous devons trouver l’URL de la page d’informations sur l’entreprise LinkedIn. Ouvrez le site Web LinkedIn, saisissez le nom de l'entreprise dans le champ de recherche et

Conseils d'optimisation Scrapy : Comment réduire l'exploration des URL en double et améliorer l'efficacité Conseils d'optimisation Scrapy : Comment réduire l'exploration des URL en double et améliorer l'efficacité Jun 22, 2023 pm 01:57 PM

Scrapy est un puissant framework d'exploration Python qui peut être utilisé pour obtenir de grandes quantités de données sur Internet. Cependant, lors du développement de Scrapy, nous rencontrons souvent le problème de l'exploration des URL en double, ce qui fait perdre beaucoup de temps et de ressources et affecte l'efficacité. Cet article présentera quelques techniques d'optimisation de Scrapy pour réduire l'exploration des URL en double et améliorer l'efficacité des robots d'exploration Scrapy. 1. Utilisez les attributs start_urls et Allowed_domains dans le robot d'exploration Scrapy pour

Utilisation de Selenium et PhantomJS dans le robot Scrapy Utilisation de Selenium et PhantomJS dans le robot Scrapy Jun 22, 2023 pm 06:03 PM

Utilisation de Selenium et PhantomJSScrapy dans le robot d'exploration Scrapy Scrapy est un excellent framework de robot d'exploration Web sous Python et a été largement utilisé dans la collecte et le traitement de données dans divers domaines. Dans la mise en œuvre du robot, il est parfois nécessaire de simuler les opérations du navigateur pour obtenir le contenu présenté par certains sites Web. Dans ce cas, Selenium et PhantomJS sont nécessaires. Selenium simule les opérations humaines sur le navigateur, nous permettant d'automatiser les tests d'applications Web

Utilisation approfondie de Scrapy : Comment explorer les données HTML, XML et JSON ? Utilisation approfondie de Scrapy : Comment explorer les données HTML, XML et JSON ? Jun 22, 2023 pm 05:58 PM

Scrapy est un puissant framework de robot d'exploration Python qui peut nous aider à obtenir des données sur Internet de manière rapide et flexible. Dans le processus d'exploration proprement dit, nous rencontrons souvent divers formats de données tels que HTML, XML et JSON. Dans cet article, nous présenterons comment utiliser Scrapy pour explorer respectivement ces trois formats de données. 1. Explorez les données HTML et créez un projet Scrapy. Tout d'abord, nous devons créer un projet Scrapy. Ouvrez la ligne de commande et entrez la commande suivante : scrapys

Comment Scrapy implémente-t-il la conteneurisation et le déploiement Docker ? Comment Scrapy implémente-t-il la conteneurisation et le déploiement Docker ? Jun 23, 2023 am 10:39 AM

À mesure que les applications Internet modernes continuent de se développer et de gagner en complexité, les robots d'exploration Web sont devenus un outil important pour l'acquisition et l'analyse de données. En tant que l'un des frameworks d'exploration les plus populaires en Python, Scrapy possède des fonctions puissantes et des interfaces API faciles à utiliser, qui peuvent aider les développeurs à explorer et à traiter rapidement les données des pages Web. Cependant, face à des tâches d'analyse à grande échelle, une seule instance de robot d'exploration Scrapy est facilement limitée par les ressources matérielles. Scrapy doit donc généralement être conteneurisé et déployé sur un conteneur Docker.

Comment utiliser Scrapy pour explorer les livres Douban et leurs notes et commentaires ? Comment utiliser Scrapy pour explorer les livres Douban et leurs notes et commentaires ? Jun 22, 2023 am 10:21 AM

Avec le développement d’Internet, les gens ont de plus en plus recours à Internet pour obtenir des informations. Pour les amateurs de livres, Douban Books est devenu une plateforme indispensable. En outre, Douban Books propose également une multitude d'évaluations et de critiques de livres, permettant aux lecteurs de comprendre un livre de manière plus complète. Cependant, obtenir manuellement ces informations revient à chercher une aiguille dans une botte de foin. À l'heure actuelle, nous pouvons utiliser l'outil Scrapy pour explorer les données. Scrapy est un framework de robot d'exploration open source basé sur Python, qui peut nous aider efficacement

See all articles