python使用rabbitmq实现网络爬虫示例
编写tasks.py
代码如下:
from celery import Celery
from tornado.httpclient import HTTPClient
app = Celery('tasks')
app.config_from_object('celeryconfig')
@app.task
def get_html(url):
http_client = HTTPClient()
try:
response = http_client.fetch(url,follow_redirects=True)
return response.body
except httpclient.HTTPError as e:
return None
http_client.close()
编写celeryconfig.py
代码如下:
CELERY_IMPORTS = ('tasks',)
BROKER_URL = 'amqp://guest@localhost:5672//'
CELERY_RESULT_BACKEND = 'amqp://'
编写spider.py
代码如下:
from tasks import get_html
from queue import Queue
from bs4 import BeautifulSoup
from urllib.parse import urlparse,urljoin
import threading
class spider(object):
def __init__(self):
self.visited={}
self.queue=Queue()
def process_html(self, html):
pass
#print(html)
def _add_links_to_queue(self,url_base,html):
soup = BeautifulSoup(html)
links=soup.find_all('a')
for link in links:
try:
url=link['href']
except:
pass
else:
url_com=urlparse(url)
if not url_com.netloc:
self.queue.put(urljoin(url_base,url))
else:
self.queue.put(url_com.geturl())
def start(self,url):
self.queue.put(url)
for i in range(20):
t = threading.Thread(target=self._worker)
t.daemon = True
t.start()
self.queue.join()
def _worker(self):
while 1:
url=self.queue.get()
if url in self.visited:
continue
else:
result=get_html.delay(url)
try:
html=result.get(timeout=5)
except Exception as e:
print(url)
print(e)
self.process_html(html)
self._add_links_to_queue(url,html)
self.visited[url]=True
self.queue.task_done()
s=spider()
s.start("http://www.bitsCN.com/")
由于html中某些特殊情况的存在,程序还有待完善。

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds

Comment utiliser RabbitMQ pour implémenter le traitement distribué des messages en PHP Introduction : Dans le développement d'applications à grande échelle, les systèmes distribués sont devenus une exigence courante. Le traitement distribué des messages est un modèle qui améliore l'efficacité et la fiabilité du système en distribuant les tâches à plusieurs nœuds de traitement. RabbitMQ est un système de mise en file d'attente de messages open source et fiable qui utilise le protocole AMQP pour implémenter la livraison et le traitement des messages. Dans cet article, nous expliquerons comment utiliser RabbitMQ en PHP pour la distribution

Comment créer une application de messagerie fiable avec React et RabbitMQ Introduction : Les applications modernes doivent prendre en charge une messagerie fiable pour obtenir des fonctionnalités telles que les mises à jour en temps réel et la synchronisation des données. React est une bibliothèque JavaScript populaire pour créer des interfaces utilisateur, tandis que RabbitMQ est un middleware de messagerie fiable. Cet article explique comment combiner React et RabbitMQ pour créer une application de messagerie fiable et fournit des exemples de code spécifiques. Présentation de RabbitMQ :

Comment créer une puissante application de robot d'exploration Web à l'aide de React et Python Introduction : Un robot d'exploration Web est un programme automatisé utilisé pour explorer des données Web via Internet. Avec le développement continu d’Internet et la croissance explosive des données, les robots d’exploration Web deviennent de plus en plus populaires. Cet article explique comment utiliser React et Python, deux technologies populaires, pour créer une puissante application de robot d'exploration Web. Nous explorerons les avantages de React en tant que framework front-end et de Python en tant que moteur d'exploration, et fournirons des exemples de code spécifiques. 1. Pour

Introduction à la solution de synchronisation des données en temps réel entre Golang et RabbitMQ : À l'ère actuelle, avec la popularité d'Internet et la croissance explosive du volume de données, la synchronisation des données en temps réel est devenue de plus en plus importante. Afin de résoudre les problèmes de transmission asynchrone et de synchronisation des données, de nombreuses entreprises ont commencé à utiliser des files d'attente de messages pour réaliser une synchronisation des données en temps réel. Cet article présentera une solution de synchronisation de données en temps réel basée sur Golang et RabbitMQ et fournira des exemples de code spécifiques. 1. Qu'est-ce que RabbitMQ ? Rabbin

GolangRabbitMQ : La conception architecturale et la mise en œuvre d'un système de file d'attente de messages hautement disponible nécessitent des exemples de code spécifiques Introduction : Avec le développement continu de la technologie Internet et sa large application, les files d'attente de messages sont devenues un élément indispensable des systèmes logiciels modernes. En tant qu'outil permettant de mettre en œuvre le découplage, la communication asynchrone, le traitement tolérant aux pannes et d'autres fonctions, la file d'attente de messages offre une haute disponibilité et une prise en charge de l'évolutivité pour les systèmes distribués. En tant que langage de programmation efficace et concis, Golang est largement utilisé pour créer des systèmes à haute concurrence et hautes performances.

Utilisez les langages Vue.js et Perl pour développer des robots d'exploration Web et des outils de récupération de données efficaces. Ces dernières années, avec le développement rapide d'Internet et l'importance croissante des données, la demande de robots d'exploration Web et d'outils de récupération de données a également augmenté. Dans ce contexte, c'est un bon choix de combiner le langage Vue.js et Perl pour développer des robots d'exploration Web et des outils de scraping de données efficaces. Cet article expliquera comment développer un tel outil à l'aide du langage Vue.js et Perl, et joindra des exemples de code correspondants. 1. Introduction au langage Vue.js et Perl

Notes d'étude PHP : Robot d'exploration Web et collecte de données Introduction : Un robot d'exploration Web est un outil qui explore automatiquement les données d'Internet. Il peut simuler le comportement humain, parcourir les pages Web et collecter les données requises. En tant que langage de script côté serveur populaire, PHP joue également un rôle important dans le domaine des robots d'exploration Web et de la collecte de données. Cet article explique comment écrire un robot d'exploration Web à l'aide de PHP et fournit des exemples de code pratiques. 1. Principes de base des robots d'exploration Web Les principes de base des robots d'exploration Web sont d'envoyer des requêtes HTTP, de recevoir et d'analyser la réponse H du serveur.

Les technologies couramment utilisées pour les robots d'exploration Web incluent la technologie de robot d'exploration ciblée, les stratégies d'exploration basées sur l'évaluation des liens, les stratégies d'exploration basées sur l'évaluation du contenu, la technologie d'exploration ciblée, etc. Introduction détaillée : 1. La technologie de robot d'exploration ciblée est un robot d'exploration Web thématique qui ajoute des modules d'évaluation de liens et d'évaluation de contenu. Le point clé de sa stratégie d'exploration est d'évaluer le contenu de la page et l'importance des liens. les documents, qui contiennent de nombreuses informations structurelles, peuvent être utilisés pour évaluer l'importance des liens ; 3. Stratégies d'exploration basées sur l'évaluation du contenu, etc.
