Maison >développement back-end >Tutoriel Python >Utilisez le framework Scrapy pour explorer la bibliothèque d'images Flickr
À l’ère actuelle des technologies de l’information, l’exploration de données massives est devenue une compétence importante. Avec le développement rapide de la technologie du Big Data, la technologie d’exploration des données est constamment mise à jour et améliorée. Parmi eux, le framework Scrapy est sans aucun doute le framework le plus couramment utilisé et le plus populaire. Il présente des avantages et une flexibilité uniques dans l'exploration et le traitement des données.
Cet article expliquera comment utiliser le framework Scrapy pour explorer la bibliothèque d'images Flickr. Flickr est un site Web de partage d'images avec des centaines de millions d'images dans son inventaire et une très grande quantité de ressources de données. Grâce à l'utilisation du framework Scrapy, nous pouvons facilement obtenir ces ressources de données, effectuer des recherches et des analyses, ou les utiliser pour créer des modèles d'application, afin de mieux utiliser la puissance du Big Data.
1. Introduction au framework Scrapy
Scrapy est un framework de robot d'exploration Web open source basé sur le langage Python. Il prend « l'efficacité » et la « maintenabilité » comme concepts de conception et met en œuvre un cadre d'exploration complet, plus adapté à l'exploration et au traitement de données à grande échelle. La partie centrale du framework Scrapy comprend les principaux modules fonctionnels suivants :
2. Obtenir la clé API Flickr
Avant d'explorer les données, nous devons demander la clé API Flickr pour obtenir l'autorisation d'accéder à la base de données Flickr. Sur le site Web des développeurs Flickr (https://www.flickr.com/services/api/misc.api_keys.html), nous pouvons obtenir une CLÉ API en nous inscrivant. Les étapes de candidature spécifiques sont les suivantes :
① Tout d'abord, nous devons saisir l'URL https://www.flickr.com/services/apps/create/apply/ pour demander la clé API.
②Après avoir accédé à ce site Web, nous devons nous connecter. Si nous n'avons pas de compte, nous devons en créer un nous-mêmes.
③Après vous être connecté, vous devez remplir et soumettre le formulaire de candidature Flickr. Dans le formulaire, vous devez principalement renseigner deux informations :
④Après avoir rempli le formulaire de candidature, le système générera une CLÉ API et un SECRET . Nous devons sauvegarder ces deux informations pour une utilisation ultérieure.
3. Implémentation de l'exploration de la bibliothèque d'images Flickr avec le framework Scrapy
Ensuite, nous présenterons comment utiliser le framework Scrapy pour explorer les données de la bibliothèque d'images Flickr.
1. Écrire le robot Scrapy
Tout d'abord, nous devons créer un nouveau projet Scrapy et créer un fichier de robot dans le projet. Dans le fichier crawler, nous devons définir les informations de base de la base de données API Flickr et l'emplacement de stockage des données :
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)
Dans le fichier crawler, nous définissons les mots-clés « chat » et « chien » de la bibliothèque d'images Flickr, puis définissez Spécifiez les paramètres de rotation de page et définissez le format sur json. Nous avons extrait et traité les informations de chaque image dans la fonction d'analyse et les avons renvoyées en utilisant le rendement.
Ensuite, nous devons définir l'emplacement de stockage et le format des données, et les définir dans settings.py :
ITEM_PIPELINES = { 'flickr.pipelines.FlickrPipeline': 300, } IMAGES_STORE = 'images'
2 Écrire un pipeline d'articles
Ensuite, nous devons écrire un pipeline d'articles pour collecter les données collectées. Les données d'image sont traitées et stockées :
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. Exécutez le programme
Après avoir terminé l'écriture du code ci-dessus, nous pouvons exécuter le framework Scrapy pour implémenter les opérations d'exploration des données. Nous devons entrer la commande suivante dans la ligne de commande :
scrapy crawl flickr
Après le démarrage du programme, le robot explorera les images de "chat" et "chien" dans la base de données Flickr et enregistrera les images dans l'emplacement de stockage spécifié.
4. Résumé
Grâce à l'introduction de cet article, nous avons appris en détail comment utiliser le framework Scrapy pour explorer la bibliothèque d'images Flickr. Dans les applications réelles, nous pouvons modifier les mots-clés, le nombre de pages ou le chemin de stockage des images en fonction de nos propres besoins. Quel que soit l'aspect sous lequel, le framework Scrapy est un framework d'exploration mature et riche en fonctionnalités. Ses fonctions constamment mises à jour et son évolutivité flexible offrent un soutien solide à notre travail d'exploration de données.
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!