[PYTHON] Re: Heroku Leben von Grund auf neu mit Flask ~ PhantomJS bis Heroku ~

Einführung

Zum ersten Mal habe ich eine API erstellt, die mit json mithilfe von Flask und Heroku of Python Scraped-Informationen zurückgibt. Daher möchte ich die Methode zusammenfassen, die ich damals durchgeführt habe.

Der Umgebungsaufbau bis *** HelloWorld *** mit Heroku ist der erste Teil Re: Heroku Leben - Umgebung beginnt mit Flask von Null und der Hallo Welt ~ Beim Der Code der API zum Kratzen mit Selen und der schönen Suppe, die dieses Mal für Heroku bereitgestellt werden soll, und seine Erklärung finden Sie im zweiten Teil. Re: Heroku-Leben ab Null mit Flask ~ Selen & PhantomJS & Beautifulsoup ~ Da es geschrieben steht, sehen Sie es bitte zusammen.

Was ist diesmal zu tun?

Wenn Sie studieren, können Sie die Räder neu erfinden

Dieses Mal werde ich schreiben, wie man mit Selenium und PhantomJS mit SlideShare als Thema kratzt.

*** Da es lang wurde, als ich es in einem Artikel zusammenstellte, ist der Inhalt des Programms, das von Selen betrieben und abgekratzt wird, in den zweiten Teil unterteilt. *** ***

Ablauf der Bereitstellung in Heroku

Vorbereitung

Die letzte Datei, die Heroku gegeben werden soll

Erstellen Sie die Anforderungen.txt

Wieder müssen wir den aktuellen Dateistatus erhöhen, um ihn auf Heroku bereitzustellen.

$ pip freeze > requirements.txt

Erstellen Sie runtime.txt

Bereiten Sie eine Datei vor, die angibt, welche Version der Laufzeit Heroku bei Verwendung von Python verwendet.

$ echo "python-3.5.2" >> runtime.txt

Sobald Sie diese Datei vorbereitet haben, ist die Vorbereitung der Datei bis zu diesem Zeitpunkt abgeschlossen.

Drücken Sie auf Heroku und die endgültigen Einstellungen

Wenn Sie hierher kommen, genau wie beim letzten Mal

Git anwenden und festschreiben

$ git init
#Setze git in den Ordner
$ git add api.py Procfile requirements.txt runtime.txt
#Alles hinzufügen
#Siehe unten.Enthält keine Buildpacks

$ git commit -m "firstcommit"
#verpflichten

Machen Sie Heroku Seite und drücken Sie

$ heroku login
#Bei heroku anmelden Geben Sie die registrierte E-Mail-Adresse ein und übergeben Sie

$ heroku create slideshare-api
#Erstellen Sie ein neues Projekt für Heroku
#Sie können nicht denselben Projektnamen verwenden. Ändern Sie ihn daher in diesem Fall.

$ git push heroku master
#Wechseln Sie zu dem von Ihnen erstellten Heroku-Projekt

Bei Heroku funktioniert es nicht, da PhantomJS zu diesem Zeitpunkt noch nicht fertig ist.

Verwenden Sie PhantomJS mit Heroku

Nach dem Hochladen der App auf Heroku müssen Sie die Einstellungen ändern, um buildpack-multi zu verwenden, das sowohl PhantomJS- als auch Python-Buildpacks verwenden kann. Beschreiben Sie, welches Buildpack in der Datei ".buildpacks" verwendet werden soll, ändern Sie die Einstellungen mit dem Befehl und drücken Sie dann auf "Heroku". Führen Sie alle drei Befehle aus.

Füge herpack buildpack-multi zu heroku hinzu

$ heroku config:add BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-multi.git

setze buildpack-multi auf heroku

$ heroku buildpacks:set https://github.com/heroku/heroku-buildpack-multi.git

Stellen Sie den PhantomJS-Pfad auf Heroku ein

$ heroku config:add LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/lib:/app/vendor/phantomjs/lib

Erstellen Sie .buildpacks

https://github.com/heroku/heroku-buildpack-python.git
https://github.com/stomita/heroku-buildpack-phantomjs.git

Wenn Sie dies tun können, schieben Sie es zu Heroku!

$ git add .buildpacks

$ git commit -m "add buildpacks"

$ git push heroku master

Referenz: Dieses Mal mache ich es auf ähnliche Weise wie dieses.

Ich habe eine andere Methode auf dieser Seite geschrieben, aber sie hat bei mir nicht funktioniert.

Komplett

Stellen Sie sicher, dass es funktioniert スクリーンショット 2016-10-17 21.44.52.png

gerührt! !! !! !!

Wenn Sie eine Fehlermeldung erhalten

Siehe auch den im vorherigen Artikel erwähnten Fehler. Bitte denken Sie daran, dass der Befehl zum Schreiben in die Konfiguration von Heroku usw. nicht in Heroku geschrieben wurde, es sei denn, er wird in Heroku übertragen.

PhantomJS funktioniert nicht bei Heroku! Überprüfe den Gegenstand

①: Ist Herokus App-Framework auf Multipack und Buildpacks auf "https: // github.com / heroku / heroku-buildpack-multi.git" eingestellt? スクリーンショット 2016-10-17 23.17.42.png

Wenn nicht, fügen Sie buildpack-multi zu heroku hinzu ”und setzen Sie` `buildpack-multi zu heroku. Es scheint, dass der` Teil nicht gut gemacht ist, also nachdem Sie den Befehl erneut eingegeben haben, Bitte ändern Sie eine Datei und schieben Sie sie zurück zu Heroku.

②: Überprüfen Sie mit Heroku-Protokollen Wie ich im vorherigen Artikel geschrieben habe, wenn Sie eine Fehlermeldung erhalten

$ heroku logs

Bitte erkundigen Sie sich bei.

driver = webdriver.PhantomJS()Wenn die Fehlermeldung den Teil oder die Stelle anzeigt, an der das Element zum ersten Mal mit dem Treiber angegeben wird, können Phantomjs auf der Heroku-Seite des Programms anscheinend nicht gut verwendet werden.**①**Überprüfen Sie die gleiche Stelle wie oder versuchen Sie, den Teil zu treffen, an dem der PhantomJS-Pfad erneut auf Heroku eingestellt ist, und drücken Sie dann auf Heroku.



 ③: Überprüfen Sie, ob es in Heroku einen Anbieter gibt
 Lassen Sie uns auf den Speicherbereich von Heroku selbst zugreifen.

$ heroku run bash

 Sie können wie ssh mit auf den Heroku-Server zugreifen. Wenn phantomJS erfolgreich in Heroku ist

~ $ ls api.py Procfile requirements.txt runtime.txt vendor

 *** Anbieter *** wird so generiert und PhantomJS ist darin enthalten.
 Wenn dies nicht der Fall ist, funktioniert es nicht. Es ist daher eine gute Idee, dies zu überprüfen.

## Nachwort
 Obwohl es lokal funktioniert, gibt es viele Stellen, an denen PhantomJS zu Heroku erhoben wird, und es funktioniert auf der Heroku-Seite nicht gut, daher denke ich, dass es stecken bleiben kann, aber bitte geben Sie Ihr Bestes!

 Auch wenn es Verbesserungen oder Fehler gibt, würden wir uns freuen, wenn Sie im Kommentarbereich darauf hinweisen könnten.
Twitter:@ymgn_ll


Recommended Posts

Re: Heroku Leben von Grund auf neu mit Flask ~ PhantomJS bis Heroku ~
Re: Heroku Leben von vorne anfangen mit Flask ~ Selenium & PhantomJS & Beautifulsoup ~
Re: Heroku Leben beginnt mit Flask von Null - Umwelt und Hallo Welt -
Phantomjs und Selen
Python Selen Chromedriver schöne Suppe
Selen
Re: Heroku Leben von vorne anfangen mit Flask ~ Selenium & PhantomJS & Beautifulsoup ~
BeautifulSoup4 Memo
Starten Sie den Router mit Python, Selenium, PhantomJS neu
Verwenden Sie den Phantomjs-Webdriver von Selen mit Pythons Unittest
Vom Umgebungsaufbau bis zum Einsatz für Kolben + Heroku mit Docker
Geschäftseffizienz von Grund auf mit Python
Betreff: Wettbewerbsfähiges Programmierleben von vorne anfangen Damit Anfänger noch etwas mehr Leistung erzielen ~ ABC154 ~ 156 mit Impressionen ~
Hochladen mit Heroku, Flask, Python, Git (4)
Maschinelles Lernen von Grund auf neu (maschinelles Lernen mit Kaggle)
Lassen Sie uns mit Flask eine Webanwendung zur Konvertierung von A nach B erstellen! Von Grund auf neu ...
Ich möchte mit einem Knopf am Kolben übergehen
Hochladen mit Heroku, Flask, Python, Git (Teil 3)
Hochladen mit Heroku, Flask, Python, Git (Teil 1)
So ändern Sie das statische Verzeichnis von der Standardeinstellung in Flask
Hochladen mit Heroku, Flask, Python, Git (Teil 2)
Lassen Sie Code Day68 von vorne beginnen "709. In Kleinbuchstaben"
So stellen Sie eine mit Flask erstellte Web-App für Heroku bereit
[Tweepy] Re: Twitter Bot Entwicklungsleben ab Null # 1 [Python]
Betreff: Wettbewerbsfähiges Programmierleben ab Null Kapitel 1.3 "Beilagentee"
Django von vorne anfangen (Teil: 2)
Django von vorne anfangen (Teil: 1)
Berühre Flask + laufe mit Heroku
PySpark Leben beginnt mit Docker
Betreff: Wettbewerbsfähiges Programmierleben ab Null Kapitel 1.2 "Python der Tränen"
Führen Sie die App mit Flask + Heroku aus
[Einführung] Von der Installation von Kibana bis zum Start
In Vim: Make, um HTML von Markdown mit Pandoc auszugeben
Lassen Sie Code Day 80 "703. Kth größtes Element in einem Stream" von vorne beginnen
Lassen Sie Code Day 66 "438. Alle Anagramme in einer Zeichenfolge finden" von vorne beginnen