Heim Backend-Entwicklung Python-Tutorial python使用rabbitmq实现网络爬虫示例

python使用rabbitmq实现网络爬虫示例

Jun 06, 2016 am 11:29 AM
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中某些特殊情况的存在,程序还有待完善。

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verwenden Sie RabbitMQ, um die verteilte Nachrichtenverarbeitung in PHP zu implementieren So verwenden Sie RabbitMQ, um die verteilte Nachrichtenverarbeitung in PHP zu implementieren Jul 18, 2023 am 11:00 AM

So verwenden Sie RabbitMQ, um die verteilte Nachrichtenverarbeitung in PHP zu implementieren. Einführung: In der groß angelegten Anwendungsentwicklung sind verteilte Systeme zu einer häufigen Anforderung geworden. Die verteilte Nachrichtenverarbeitung ist ein Muster, das die Effizienz und Zuverlässigkeit des Systems verbessert, indem Aufgaben auf mehrere Verarbeitungsknoten verteilt werden. RabbitMQ ist ein zuverlässiges Open-Source-Nachrichtenwarteschlangensystem, das das AMQP-Protokoll verwendet, um die Nachrichtenzustellung und -verarbeitung zu implementieren. In diesem Artikel erfahren Sie, wie Sie RabbitMQ in PHP zur Verteilung verwenden

So erstellen Sie eine zuverlässige Messaging-App mit React und RabbitMQ So erstellen Sie eine zuverlässige Messaging-App mit React und RabbitMQ Sep 28, 2023 pm 08:24 PM

So erstellen Sie eine zuverlässige Messaging-Anwendung mit React und RabbitMQ Einführung: Moderne Anwendungen müssen zuverlässiges Messaging unterstützen, um Funktionen wie Echtzeitaktualisierungen und Datensynchronisierung zu erreichen. React ist eine beliebte JavaScript-Bibliothek zum Erstellen von Benutzeroberflächen, während RabbitMQ eine zuverlässige Messaging-Middleware ist. In diesem Artikel wird erläutert, wie Sie React und RabbitMQ kombinieren, um eine zuverlässige Messaging-Anwendung zu erstellen, und es werden spezifische Codebeispiele bereitgestellt. RabbitMQ-Übersicht:

So erstellen Sie eine leistungsstarke Webcrawler-Anwendung mit React und Python So erstellen Sie eine leistungsstarke Webcrawler-Anwendung mit React und Python Sep 26, 2023 pm 01:04 PM

So erstellen Sie eine leistungsstarke Webcrawler-Anwendung mit React und Python Einführung: Ein Webcrawler ist ein automatisiertes Programm, das zum Crawlen von Webseitendaten durch das Internet verwendet wird. Mit der kontinuierlichen Weiterentwicklung des Internets und dem explosionsartigen Datenwachstum erfreuen sich Webcrawler immer größerer Beliebtheit. In diesem Artikel wird erläutert, wie Sie mit React und Python, zwei beliebten Technologien, eine leistungsstarke Webcrawler-Anwendung erstellen. Wir werden die Vorteile von React als Front-End-Framework und Python als Crawler-Engine untersuchen und spezifische Codebeispiele bereitstellen. 1. Für

Lösung für die Echtzeit-Datensynchronisierung zwischen Golang und RabbitMQ Lösung für die Echtzeit-Datensynchronisierung zwischen Golang und RabbitMQ Sep 27, 2023 pm 10:41 PM

Einführung in die Lösung für die Echtzeit-Datensynchronisierung zwischen Golang und RabbitMQ: In der heutigen Zeit, mit der Popularität des Internets und dem explosionsartigen Wachstum des Datenvolumens, wird die Echtzeit-Datensynchronisierung immer wichtiger. Um die Probleme der asynchronen Datenübertragung und Datensynchronisierung zu lösen, haben viele Unternehmen damit begonnen, Nachrichtenwarteschlangen zu verwenden, um eine Echtzeitsynchronisierung von Daten zu erreichen. In diesem Artikel wird eine Echtzeit-Datensynchronisierungslösung basierend auf Golang und RabbitMQ vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Was ist RabbitMQ? Rabbi

Golang RabbitMQ: Architekturentwurf und Implementierung eines hochverfügbaren Nachrichtenwarteschlangensystems Golang RabbitMQ: Architekturentwurf und Implementierung eines hochverfügbaren Nachrichtenwarteschlangensystems Sep 28, 2023 am 08:18 AM

GolangRabbitMQ: Der architektonische Entwurf und die Implementierung eines hochverfügbaren Nachrichtenwarteschlangensystems erfordern spezifische Codebeispiele. Einführung: Mit der kontinuierlichen Entwicklung der Internettechnologie und ihrer breiten Anwendung sind Nachrichtenwarteschlangen zu einem unverzichtbaren Bestandteil moderner Softwaresysteme geworden. Als Werkzeug zur Erzielung von Entkopplung, asynchroner Kommunikation, fehlertoleranter Verarbeitung und anderen Funktionen bietet die Nachrichtenwarteschlange Unterstützung für hohe Verfügbarkeit und Skalierbarkeit für verteilte Systeme. Als effiziente und prägnante Programmiersprache wird Golang häufig zum Aufbau von Systemen mit hoher Parallelität und hoher Leistung verwendet.

Entwickeln Sie effiziente Webcrawler und Daten-Scraping-Tools mit den Sprachen Vue.js und Perl Entwickeln Sie effiziente Webcrawler und Daten-Scraping-Tools mit den Sprachen Vue.js und Perl Jul 31, 2023 pm 06:43 PM

Verwenden Sie die Sprachen Vue.js und Perl, um effiziente Webcrawler und Daten-Scraping-Tools zu entwickeln. Mit der rasanten Entwicklung des Internets und der zunehmenden Bedeutung von Daten ist auch die Nachfrage nach Web-Crawlern und Daten-Scraping-Tools gestiegen. In diesem Zusammenhang ist es eine gute Wahl, Vue.js und die Perl-Sprache zu kombinieren, um effiziente Webcrawler und Daten-Scraping-Tools zu entwickeln. In diesem Artikel wird vorgestellt, wie man ein solches Tool mit Vue.js und der Perl-Sprache entwickelt, und es werden entsprechende Codebeispiele beigefügt. 1. Einführung in Vue.js und die Perl-Sprache

Anmerkungen zur PHP-Studie: Webcrawler und Datenerfassung Anmerkungen zur PHP-Studie: Webcrawler und Datenerfassung Oct 08, 2023 pm 12:04 PM

Anmerkungen zur PHP-Studie: Webcrawler und Datenerfassung Einführung: Ein Webcrawler ist ein Tool, das automatisch Daten aus dem Internet crawlt. Es kann menschliches Verhalten simulieren, Webseiten durchsuchen und die erforderlichen Daten sammeln. Als beliebte serverseitige Skriptsprache spielt PHP auch im Bereich Webcrawler und Datenerfassung eine wichtige Rolle. In diesem Artikel wird erklärt, wie man einen Webcrawler mit PHP schreibt, und praktische Codebeispiele bereitgestellt. 1. Grundprinzipien von Webcrawlern Die Grundprinzipien von Webcrawlern bestehen darin, HTTP-Anfragen zu senden, die H-Antwort des Servers zu empfangen und zu analysieren.

Welche Technologien werden am häufigsten für Webcrawler verwendet? Welche Technologien werden am häufigsten für Webcrawler verwendet? Nov 10, 2023 pm 05:44 PM

Zu den häufig verwendeten Technologien für Webcrawler gehören die fokussierte Crawler-Technologie, auf der Linkbewertung basierende Crawling-Strategien, auf der Inhaltsbewertung basierende Crawling-Strategien, die fokussierte Crawling-Technologie usw. Detaillierte Einführung: 1. Die fokussierte Crawler-Technologie ist ein Themen-Webcrawler, der Module zur Linkbewertung und Inhaltsbewertung hinzufügt. Der Kernpunkt seiner Crawling-Strategie besteht darin, den Seiteninhalt und die Bedeutung von Links zu bewerten Dokumente, die über viele Strukturinformationen verfügen, können zur Bewertung der Linkbedeutung verwendet werden. 3. Crawling-Strategien basierend auf der Inhaltsbewertung usw.

See all articles