Heim > Artikel > Backend-Entwicklung > Verwenden Sie das Scrapy-Framework, um die Flickr-Bildbibliothek zu crawlen
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:
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:
④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)
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'
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
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
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!