[PYTHON] Laden Sie die abgekratzten Artefakte in Scrapy Cloud auf S3 hoch

Einführung

Zuvor hatte ich zum Studium Ich habe versucht, eine Postleitzahlensuch-API mit AWS Lambda + API Gateway zu erstellen, aber die Postleitzahlendaten lauten "Scrapy". Ich habe es abgekratzt und zur Verwendung auf "S3" hochgeladen. Dieses Mal werde ich über die Punkte schreiben, von denen ich abhängig war, bevor ich das Projekt in "Scrapy Cloud" bereitstellte und den regulären Zeitplan ausführte.

Für "Scrapy Cloud" habe ich auf die folgende URL verwiesen.

Gesamtworkflow

Die folgende Abbildung zeigt den gesamten Workflow.

jp-zip_scrapy構成図.png

Bis zur Bereitstellung auf dem "Scraping Hub"

Von der Erstellung eines "Scrapy" -Projekts bis zur Bereitstellung für "Scrapinghub" ist der Ablauf wie folgt.

--Erstellen Sie ein Scrapy-Projekt

Wovon ich süchtig war, als ich einen Job auf "Scraping Hub" ausführte

Es hat gut funktioniert, bis ich es für "Scrapinghub" bereitgestellt habe, aber es gab einige süchtig machende Punkte, als ich den Job für "Scrapinghub" ausgeführt habe.

boto unterstützt 2 systeme

Boto wird zum Betreiben von AWS verwendet. Seien Sie jedoch vorsichtig, da "Scrapy Cloud" "Boto" (v2) vorinstalliert hat. ist.

Zusätzliche Installation von boto3 (aktualisiert am 19.12.2016)

Wenn Sie in "Scrapinghub.yml" "Requirements_file" angeben, können Sie die erforderlichen Bibliotheken installieren und boto3 verwenden.

Wenn "Anforderungsdatei" zum Zeitpunkt der Bereitstellung normal verarbeitet wird, können Sie die zusätzlich installierte Bibliothek in "Anforderungen" von "Code & Bereitstellungen" überprüfen.

requirements.png

Was tun mit AWS-Anmeldeinformationen?

Für AWS-Anmeldeinformationen gehen Sie zu Spider Settings-> Spider Settigns und registrieren Sie die Einstellungswerte wie unten gezeigt.

scrapy_settings.png

Zugriff über den Code wie folgt.

from scrapy.conf import settings

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

Wenn Sie lokal prüfen möchten, schreiben Sie den Einstellungswert in settings.py. Wenn die Anmeldeinformationen jedoch in "~ / .aws / credentials" vorhanden sind, muss der Einstellungswert nicht beschrieben werden.

settings.py


AWS_ACCESS_KEY_ID = 'xxxxxx'
AWS_SECRET_ACCESS_KEY = 'xxxxxx'

Aufgabe

--Das Hochladen von Dateien in "S3" ist extrem langsam, das Scraping dauert ungefähr 20 Minuten ――Es dient Studienzwecken, sodass Sie sich keine Sorgen machen müssen, aber ich möchte es irgendwie verbessern.

abschließend

Anfangs habe ich versucht, das Scrapy-Projekt sowohl auf AWS Lambda als auch auf der API auszuführen. Ich musste den Quellcode jedoch in eine ZIP-Datei einschließlich der Bibliothek komprimieren und hochladen. Infolgedessen funktionierte er nicht gut und versuchte, ihn gehorsam in "Scrapy Cloud" bereitzustellen.

Ich wurde auch zu Bot Crawler Adventskalender 2016 eingeladen, also habe ich auch dort einige Bots mit "Scrapy Cloud" erstellt und einen Artikel geschrieben. Ich werde versuchen.

Bis bald.

Recommended Posts

Laden Sie die abgekratzten Artefakte in Scrapy Cloud auf S3 hoch
PUT gzip direkt in S3 in Python
So wechseln Sie die Python-Version in Cloud9
Laden Sie das, was Sie angefordert haben, mit AWS Lambda Python in S3 hoch
Verwenden Sie boto, um Dateien auf s3 hoch- / herunterzuladen.
Scraping mit Python-Einführung in Scrapy Erster 2. Schritt
Übergeben von Einstellungen an Item Pipeline in Scrapy
Laden Sie Bilder mit tkinter mit GUI auf S3 hoch
Einführung in Scrapy (1)
Einführung in Scrapy (3)
Einführung in Scrapy (2)
Einführung in Scrapy (4)
Laden Sie das durch Anfragen heruntergeladene Bild direkt in S3 hoch
Hochladen von Dateien in der generischen Klassenansicht von Django
Veröffentlichen / Hochladen einer in Python erstellten Bibliothek in PyPI