Heim Backend-Entwicklung Python-Tutorial Verwenden Sie das Scrapy-Framework, um die Flickr-Bildbibliothek zu crawlen

Verwenden Sie das Scrapy-Framework, um die Flickr-Bildbibliothek zu crawlen

Jun 22, 2023 am 11:02 AM
爬虫 scrapy flickr

Im heutigen Zeitalter der Informationstechnologie ist das Crawlen großer Datenmengen zu einer wichtigen Fähigkeit geworden. Mit der rasanten Entwicklung der Big-Data-Technologie wird die Daten-Crawling-Technologie ständig aktualisiert und verbessert. Unter diesen ist das Scrapy-Framework zweifellos das am häufigsten verwendete und beliebteste Framework. Es bietet einzigartige Vorteile und Flexibilität beim Crawlen und Verarbeiten von Daten.

In diesem Artikel erfahren Sie, wie Sie das Scrapy-Framework zum Crawlen der Flickr-Bildbibliothek verwenden. Flickr ist eine Website zum Teilen von Bildern mit einem Bestand von Hunderten Millionen Bildern und einer sehr großen Menge an Datenressourcen. Durch die Verwendung des Scrapy-Frameworks können wir diese Datenressourcen problemlos abrufen, Recherchen und Analysen durchführen oder sie zum Erstellen von Anwendungsmodellen verwenden, um die Leistungsfähigkeit von Big Data besser zu nutzen.

1. Einführung in das Scrapy-Framework

Scrapy ist ein Open-Source-Webcrawler-Framework, das auf der Python-Sprache basiert. Das Designkonzept basiert auf „Effizienz“ und „Wartbarkeit“ und implementiert ein umfassendes Crawler-Framework, das sich besser zum Crawlen und Verarbeiten großer Datenmengen eignet. Der Kernbestandteil des Scrapy-Frameworks umfasst die folgenden Hauptfunktionsmodule:

  • Engine: Verantwortlich für die Verarbeitung des Datenflusses des gesamten Systems und die Steuerung der Interaktion und Datenübertragung zwischen verschiedenen Komponenten.
  • Scheduler: Verantwortlich für das Sortieren der von der Engine gesendeten Anfragen und deren Übermittlung an den Downloader.
  • Downloader (Downloader): Verantwortlich für das Herunterladen von Webinhalten, die Verarbeitung der von der Webseite zurückgegebenen Inhalte und die anschließende Übergabe an die Engine.
  • Parser (Spider): Verantwortlich für das Parsen der vom Downloader heruntergeladenen Webseiten, das Extrahieren der gewünschten Daten und deren Organisation in strukturierten Daten.
  • Pipeline: Verantwortlich für die anschließende Verarbeitung der verarbeiteten Daten, z. B. das Speichern in einer Datenbank oder Datei usw.

2. Besorgen Sie sich den Flickr-API-Schlüssel

Bevor wir Daten crawlen, müssen wir den Flickr-API-Schlüssel beantragen, um die Erlaubnis zum Zugriff auf die Flickr-Datenbank zu erhalten. Auf der Flickr-Entwickler-Website (https://www.flickr.com/services/api/misc.api_keys.html) können wir durch Registrierung einen API-SCHLÜSSEL erhalten. Die spezifischen Antragsschritte sind wie folgt:

① Zuerst müssen wir die URL https://www.flickr.com/services/apps/create/apply/ eingeben, um den API-SCHLÜSSEL zu beantragen.

②Nachdem wir diese Website betreten haben, müssen wir uns anmelden. Wenn wir noch kein Konto haben, müssen wir selbst eines registrieren.

③Nachdem Sie sich angemeldet haben, müssen Sie das Flickr-Bewerbungsformular ausfüllen und abschicken. Im Formular müssen Sie hauptsächlich zwei Informationsaspekte ausfüllen:

  • Der Name einer kleinen Bewerbung
  • Eine Beschreibung eines „nichtkommerziellen“ Zwecks

④Nach dem Ausfüllen des Bewerbungsformulars generiert das System ein API-SCHLÜSSEL und ein GEHEIMNIS. Wir müssen diese beiden Informationen zur späteren Verwendung speichern.

3. Implementierung der Crawling-Flickr-Bildbibliothek mit dem Scrapy-Framework

Als nächstes stellen wir vor, wie man das Scrapy-Framework zum Crawlen von Flickr-Bildbibliotheksdaten verwendet.

1. Scrapy-Crawler schreiben

Zuerst müssen wir ein neues Scrapy-Projekt erstellen und eine Crawler-Datei im Projekt erstellen. In der Crawler-Datei müssen wir die grundlegenden Informationen der Flickr-API-Datenbank und den Speicherort der Daten festlegen:

import time
import json
import scrapy
from flickr.items import FlickrItem

class FlickrSpider(scrapy.Spider):
    name = 'flickr'
    api_key = 'YOUR_API_KEY'  # 这里填写你自己的API Key
    tags = 'cat,dog'  # 这里将cat和dog作为爬取的关键词,你可以自由定义
    format = 'json'
    nojsoncallback = '1'
    page = '1'
    per_page = '50'

    start_urls = [
        'https://api.flickr.com/services/rest/?method=flickr.photos.search&'
        'api_key={}'
        '&tags={}'
        '&page={}'
        '&per_page={}'
        '&format={}'
        '&nojsoncallback={}'.format(api_key, tags, page, per_page, format, nojsoncallback)
    ]

    def parse(self, response):
        results = json.loads(response.body_as_unicode())
        for photo in results['photos']['photo']:
            item = FlickrItem()
            item['image_title'] = photo['title']
            item['image_url'] = 'https://farm{}.staticflickr.com/{}/{}_{}.jpg'.format(
                photo['farm'], photo['server'], photo['id'], photo['secret'])
            yield item

        if int(self.page) <= results['photos']['pages']:
            self.page = str(int(self.page) + 1)
            next_page_url = 'https://api.flickr.com/services/rest/?method=flickr.photos.search&' 
                            'api_key={}' 
                            '&tags={}' 
                            '&page={}' 
                            '&per_page={}' 
                            '&format={}' 
                            '&nojsoncallback={}'.format(self.api_key, self.tags, self.page, self.per_page, self.format, self.nojsoncallback)
            time.sleep(1)  # 设置延时1秒钟
            yield scrapy.Request(url=next_page_url, callback=self.parse)
Nach dem Login kopieren

In der Crawler-Datei legen wir die Schlüsselwörter „Katze“ und „Hund“ der Flickr-Bildbibliothek fest. und dann festlegen Geben Sie die Umblätterparameter an und stellen Sie das Format auf JSON ein. Wir haben die Informationen jedes Bildes in der Parse-Funktion extrahiert, verarbeitet und sie mithilfe von yield zurückgegeben.

Als nächstes müssen wir den Speicherort und das Format der Daten definieren und in Settings.py festlegen:

ITEM_PIPELINES = {
   'flickr.pipelines.FlickrPipeline': 300,
}

IMAGES_STORE = 'images'
Nach dem Login kopieren

2 Schreiben Sie eine Item-Pipeline

Als nächstes müssen wir eine Item-Pipeline schreiben, um die zu sammeln Die gesammelten Daten werden verarbeitet und gespeichert:

import scrapy
from scrapy.pipelines.images import ImagesPipeline
from scrapy.exceptions import DropItem

class FlickrPipeline(object):
    def process_item(self, item, spider):
        return item

class FlickrImagesPipeline(ImagesPipeline):
    def get_media_requests(self, item, info):
        for image_url in item['image_url']:
            try:
                yield scrapy.Request(image_url)
            except Exception as e:
                pass

    def item_completed(self, results, item, info):
        image_paths = [x['path'] for ok, x in results if ok]
        if not image_paths:
            raise DropItem("Item contains no images")
        item['image_paths'] = image_paths
        return item
Nach dem Login kopieren

3. Führen Sie das Programm aus.

Nachdem wir das obige Codeschreiben abgeschlossen haben, können wir das Scrapy-Framework ausführen, um Daten-Crawling-Vorgänge zu implementieren. Wir müssen den folgenden Befehl in die Befehlszeile eingeben:

scrapy crawl flickr
Nach dem Login kopieren

Nachdem das Programm gestartet wurde, crawlt der Crawler die Bilder von „Katze“ und „Hund“ in der Flickr-Datenbank und speichert die Bilder am angegebenen Speicherort.

4. Zusammenfassung

Durch die Einleitung dieses Artikels haben wir im Detail gelernt, wie man das Scrapy-Framework zum Crawlen der Flickr-Bildbibliothek verwendet. In tatsächlichen Anwendungen können wir Schlüsselwörter, die Anzahl der Seiten oder den Pfad der Bildspeicherung entsprechend unseren eigenen Anforderungen ändern. Egal aus welcher Perspektive, das Scrapy-Framework ist ein ausgereiftes und funktionsreiches Crawler-Framework. Seine ständig aktualisierten Funktionen und seine flexible Skalierbarkeit bieten eine starke Unterstützung für unsere Daten-Crawling-Arbeit.

Das obige ist der detaillierte Inhalt vonVerwenden Sie das Scrapy-Framework, um die Flickr-Bildbibliothek zu crawlen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
2 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)

Wie lange dauert es, den Python-Crawler zu erlernen? Wie lange dauert es, den Python-Crawler zu erlernen? Oct 25, 2023 am 09:44 AM

Die Zeit, die zum Erlernen von Python-Crawlern benötigt wird, ist von Person zu Person unterschiedlich und hängt von Faktoren wie persönlicher Lernfähigkeit, Lernmethoden, Lernzeit und Erfahrung ab. Beim Erlernen von Python-Crawlern geht es nicht nur um das Erlernen der Technologie selbst, sondern es sind auch gute Fähigkeiten zur Informationsbeschaffung, zur Problemlösung und zur Teamarbeit erforderlich. Durch kontinuierliches Lernen und Üben werden Sie nach und nach zu einem hervorragenden Python-Crawler-Entwickler heranwachsen.

Scrapy-Fallanalyse: So crawlen Sie Unternehmensinformationen auf LinkedIn Scrapy-Fallanalyse: So crawlen Sie Unternehmensinformationen auf LinkedIn Jun 23, 2023 am 10:04 AM

Scrapy ist ein Python-basiertes Crawler-Framework, mit dem schnell und einfach relevante Informationen im Internet abgerufen werden können. In diesem Artikel analysieren wir anhand eines Scrapy-Falls im Detail, wie Unternehmensinformationen auf LinkedIn gecrawlt werden. Bestimmen Sie die Ziel-URL. Zunächst müssen wir klarstellen, dass unser Ziel die Unternehmensinformationen auf LinkedIn sind. Daher müssen wir die URL der LinkedIn-Unternehmensinformationsseite finden. Öffnen Sie die LinkedIn-Website, geben Sie den Firmennamen in das Suchfeld ein und

Scrapy-Implementierungsmethode für asynchrones Laden basierend auf Ajax Scrapy-Implementierungsmethode für asynchrones Laden basierend auf Ajax Jun 22, 2023 pm 11:09 PM

Scrapy ist ein Open-Source-Python-Crawler-Framework, das schnell und effizient Daten von Websites abrufen kann. Viele Websites verwenden jedoch die asynchrone Ladetechnologie von Ajax, was es Scrapy unmöglich macht, Daten direkt abzurufen. In diesem Artikel wird die Scrapy-Implementierungsmethode basierend auf dem asynchronen Laden von Ajax vorgestellt. 1. Ajax-Prinzip des asynchronen Ladens Ajax-Asynchronladen: Bei der herkömmlichen Seitenlademethode muss der Browser, nachdem er eine Anfrage an den Server gesendet hat, darauf warten, dass der Server eine Antwort zurückgibt und die gesamte Seite lädt, bevor er mit dem nächsten Schritt fortfährt.

Analyse und Lösungen für häufige Probleme von PHP-Crawlern Analyse und Lösungen für häufige Probleme von PHP-Crawlern Aug 06, 2023 pm 12:57 PM

Analyse häufiger Probleme und Lösungen für PHP-Crawler Einleitung: Mit der rasanten Entwicklung des Internets ist die Erfassung von Netzwerkdaten in verschiedenen Bereichen zu einem wichtigen Bindeglied geworden. Als weit verbreitete Skriptsprache verfügt PHP über leistungsstarke Funktionen zur Datenerfassung. Eine der am häufigsten verwendeten Technologien sind Crawler. Bei der Entwicklung und Verwendung von PHP-Crawlern stoßen wir jedoch häufig auf einige Probleme. In diesem Artikel werden diese Probleme analysiert, Lösungen für sie bereitgestellt und entsprechende Codebeispiele bereitgestellt. 1. Beschreibung des Problems, dass die Daten der Zielwebseite nicht korrekt geparst werden können.

Tipps zur Scrapy-Optimierung: So reduzieren Sie das Crawling doppelter URLs und verbessern die Effizienz Tipps zur Scrapy-Optimierung: So reduzieren Sie das Crawling doppelter URLs und verbessern die Effizienz Jun 22, 2023 pm 01:57 PM

Scrapy ist ein leistungsstarkes Python-Crawler-Framework, mit dem große Datenmengen aus dem Internet abgerufen werden können. Bei der Entwicklung von Scrapy stoßen wir jedoch häufig auf das Problem, doppelte URLs zu crawlen, was viel Zeit und Ressourcen verschwendet und die Effizienz beeinträchtigt. In diesem Artikel werden einige Scrapy-Optimierungstechniken vorgestellt, um das Crawlen doppelter URLs zu reduzieren und die Effizienz von Scrapy-Crawlern zu verbessern. 1. Verwenden Sie die Attribute „start_urls“ und „allowed_domains“ im Scrapy-Crawler

Effiziente Java-Crawler-Praxis: Weitergabe von Webdaten-Crawling-Techniken Effiziente Java-Crawler-Praxis: Weitergabe von Webdaten-Crawling-Techniken Jan 09, 2024 pm 12:29 PM

Java-Crawler-Praxis: So crawlen Sie Webseitendaten effizient Einführung: Mit der rasanten Entwicklung des Internets werden große Mengen wertvoller Daten auf verschiedenen Webseiten gespeichert. Um diese Daten zu erhalten, ist es oft notwendig, manuell auf jede Webseite zuzugreifen und die Informationen einzeln zu extrahieren, was zweifellos eine mühsame und zeitaufwändige Aufgabe ist. Um dieses Problem zu lösen, wurden verschiedene Crawler-Tools entwickelt, von denen der Java-Crawler eines der am häufigsten verwendeten ist. Dieser Artikel führt den Leser dazu, zu verstehen, wie man mit Java einen effizienten Webcrawler schreibt, und demonstriert die Praxis anhand spezifischer Codebeispiele. 1. Die Basis des Reptils

Ausführlicher Einsatz von Scrapy: Wie crawlt man HTML-, XML- und JSON-Daten? Ausführlicher Einsatz von Scrapy: Wie crawlt man HTML-, XML- und JSON-Daten? Jun 22, 2023 pm 05:58 PM

Scrapy ist ein leistungsstarkes Python-Crawler-Framework, mit dem wir schnell und flexibel Daten im Internet abrufen können. Beim eigentlichen Crawling-Prozess stoßen wir häufig auf verschiedene Datenformate wie HTML, XML und JSON. In diesem Artikel stellen wir vor, wie man Scrapy zum Crawlen dieser drei Datenformate verwendet. 1. HTML-Daten crawlen und ein Scrapy-Projekt erstellen. Zuerst müssen wir ein Scrapy-Projekt erstellen. Öffnen Sie die Befehlszeile und geben Sie den folgenden Befehl ein: scrapys

Verwendung von Selenium und PhantomJS im Scrapy-Crawler Verwendung von Selenium und PhantomJS im Scrapy-Crawler Jun 22, 2023 pm 06:03 PM

Verwendung von Selenium und PhantomJS in Scrapy-Crawlern Scrapy ist ein hervorragendes Webcrawler-Framework unter Python und wird häufig bei der Datenerfassung und -verarbeitung in verschiedenen Bereichen eingesetzt. Bei der Implementierung des Crawlers ist es manchmal erforderlich, Browservorgänge zu simulieren, um die von bestimmten Websites präsentierten Inhalte abzurufen. In diesem Fall werden Selenium und PhantomJS benötigt. Selenium simuliert menschliche Vorgänge im Browser und ermöglicht uns so die Automatisierung von Webanwendungstests

See all articles