[PYTHON] Télécharger les artefacts récupérés dans Scrapy Cloud vers S3

introduction

Auparavant, dans le but d'étudier, j'ai essayé de créer une API de recherche de code postal avec AWS lambda + API Gateway, mais les données de code postal sont «Scrapy». Je l'ai récupéré et téléchargé sur S3 pour utilisation. Cette fois, j'écrirai sur les points auxquels j'étais accro avant de déployer le projet sur Scrapy Cloud et d'exécuter le calendrier régulier.

Pour «Scrapy Cloud», j'ai fait référence à l'URL suivante.

Flux de travail global

La figure ci-dessous montre le flux de travail global.

jp-zip_scrapy構成図.png

Jusqu'au déploiement sur le «hub de scraping»

De la création d'un projet «scrapy» à son déploiement sur «scrapinghub», le déroulement est le suivant.

--Créer un projet scrapy

Ce à quoi j'étais accro lors de l'exécution d'un travail sur scraping hub

Cela fonctionnait bien jusqu'à ce que je le déploie sur scrapinghub, mais il y avait quelques points addictifs lorsque j'ai exécuté le travail sur scrapinghub.

boto prend en charge 2 systèmes

Boto est utilisé pour les opérations AWS, mais soyez prudent car Scrapy Cloud est pré-installé boto (v2). est.

Installation supplémentaire de boto3 (mise à jour 2016-12-19)

Si vous spécifiez requirements_file dans scrapinghub.yml, vous pouvez installer les bibliothèques requises, vous pouvez donc utiliser boto3.

Si requirements_file est traité normalement au moment du déploiement, vous pouvez vérifier la bibliothèque supplémentaire installée dans requirements de Code & Deploys.

requirements.png

Que faire avec les informations d'identification AWS

Pour les informations d'identification AWS, accédez à Paramètres Spider-> Paramètres Spider et enregistrez les paramètres comme indiqué ci-dessous.

scrapy_settings.png

Accédez à partir du code comme suit.

from scrapy.conf import settings

s3 = boto.connect_s3(settings['AWS_ACCESS_KEY_ID'], settings['AWS_SECRET_ACCESS_KEY'])

Si vous voulez vérifier localement, écrivez la valeur du paramètre dans settings.py. Cependant, si les informations d'identification existent dans ~ / .aws / credentials, il n'est pas nécessaire de décrire la valeur du paramètre.

settings.py


AWS_ACCESS_KEY_ID = 'xxxxxx'
AWS_SECRET_ACCESS_KEY = 'xxxxxx'

Tâche

en conclusion

Au départ, j'essayais d'exécuter le projet Scrapy sur ʻAWS Lambdaainsi que sur l'API. Cependant, j'ai dû compresser le code source dans un fichier ZIP comprenant la bibliothèque et le télécharger, et par conséquent, cela ne fonctionnait pas bien, alors j'ai essayé de le déployer surScrapy Cloud` avec obéissance.

J'ai également été invité au Bot Crawler Advent Calendar 2016, donc même là-bas, j'ai créé des robots en utilisant Scrapy Cloud et j'ai écrit un article. Je vais essayer de.

À bientôt.

Recommended Posts

Télécharger les artefacts récupérés dans Scrapy Cloud vers S3
PUT gzip directement dans S3 en Python
Comment changer de version de Python dans cloud9
Téléchargez ce que vous avez dans la demande vers S3 avec AWS Lambda Python
Utilisez boto pour charger / télécharger des fichiers vers s3.
Scraping avec Python - Introduction à Scrapy Première 2e étape
Comment transmettre les paramètres au pipeline d'articles dans Scrapy
Télécharger des images sur S3 avec une interface graphique à l'aide de tkinter
Introduction à Scrapy (1)
Introduction à Scrapy (3)
Introduction à Scrapy (2)
Introduction à Scrapy (4)
Téléchargez l'image téléchargée par requêtes directement vers S3
Comment télécharger des fichiers dans la vue de classe générique Django
Publier / télécharger une bibliothèque créée en Python vers PyPI