Pour la première fois, j'ai créé une API qui renvoie des informations grattées avec json en utilisant Flask et Heroku of Python, donc j'aimerais résumer la méthode que j'ai utilisée à l'époque.
La construction de l'environnement jusqu'à *** HelloWorld *** avec heroku est la première partie Re: Heroku life - Environment start with Flask from zero and the Hello World ~ À Le code de l'API pour gratter au sélénium et Belle soupe à déployer sur heroku cette fois-ci et son explication se trouvent dans la deuxième partie. Re: La vie Heroku à partir de zéro avec Flask ~ Selenium & PhantomJS & Beautifulsoup ~ Puisqu'il est écrit, veuillez le voir ensemble.
Cette fois, j'écrirai comment gratter en utilisant Selenium et PhantomJS en utilisant SlideShare comme thème.
*** Comme il est devenu long lorsque je l'ai rassemblé en un seul article, le contenu du programme exploité et gratté par le sélénium est divisé dans la deuxième partie. *** ***
Encore une fois, nous devons augmenter l'état actuel du fichier pour le déployer sur Heroku.
$ pip freeze > requirements.txt
Préparez un fichier qui spécifie la version du runtime que Heroku utilisera lors de l'utilisation de Python.
$ echo "python-3.5.2" >> runtime.txt
Quand tu arrives ici, comme tu l'as fait la dernière fois
$ git init
#Définissez git dans le dossier
$ git add api.py Procfile requirements.txt runtime.txt
#Tout ajouter
#Voir ci-dessous.N'inclut pas les buildpacks
$ git commit -m "firstcommit"
#commettre
$ heroku login
#Connectez-vous à heroku Entrez l'adresse e-mail enregistrée et passez
$ heroku create slideshare-api
#Créer un nouveau projet pour heroku
#Vous ne pouvez pas utiliser le même nom de projet, veuillez donc le modifier si vous le faites.
$ git push heroku master
#Poussez vers le projet heroku que vous avez créé
Cela ne fonctionne pas avec heroku car PhantomJS n'est pas encore prêt à ce stade.
Après avoir téléchargé l'application sur Heroku, vous devez modifier les paramètres pour utiliser buildpack-multi, qui peut utiliser à la fois les buildpacks PhantomJS et Python. Décrivez le buildpack à utiliser dans le fichier `` .buildpacks '', modifiez les paramètres avec la commande, puis poussez vers heroku. Exécutez les trois commandes.
$ heroku config:add BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-multi.git
$ heroku buildpacks:set https://github.com/heroku/heroku-buildpack-multi.git
$ heroku config:add LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/lib:/app/vendor/phantomjs/lib
https://github.com/heroku/heroku-buildpack-python.git
https://github.com/stomita/heroku-buildpack-phantomjs.git
Si vous pouvez le faire, poussez-le vers heroku!
$ git add .buildpacks
$ git commit -m "add buildpacks"
$ git push heroku master
Référence: Cette fois, je le fais d'une manière similaire à celle-ci.
J'ai écrit une autre méthode sur ce site, mais cela n'a pas fonctionné pour moi.
Assurez-vous que cela fonctionne
déplacé! !! !! !!
Voir également l'erreur mentionnée dans l'article précédent. Veuillez penser que la commande pour écrire dans la configuration de heroku, etc. n'a pas été écrite dans heroku à moins qu'elle ne soit poussée vers heroku.
①: Le cadre d'application de Heroku est-il défini sur Multipack et Buildpacks est-il défini sur
https: // github.com / heroku / heroku-buildpack-multi.git ''?
Sinon, ajoutez `buildpack-multi à heroku" et définissez
buildpack-multi sur heroku. Il semble que la partie
`` ne soit pas bien faite, donc après avoir tapé à nouveau la commande, Veuillez changer un fichier et le renvoyer vers heroku.
②: Vérifiez avec les journaux heroku Comme je l'ai écrit dans l'article précédent, si vous obtenez une erreur
$ heroku logs
Veuillez vérifier avec.
driver = webdriver.PhantomJS()Si le message d'erreur montre la partie de ou l'endroit où l'élément est spécifié en utilisant le pilote pour la première fois, il semble que phantomjs ne peut pas être utilisé correctement du côté heroku du programme.**①**Vérifiez le même endroit que, ou essayez de frapper la partie où le chemin PhantomJS est à nouveau défini sur heroku, puis poussez vers heroku.
③: Vérifiez s'il y a un fournisseur dans heroku
Accédons à la zone de stockage de heroku lui-même.
$ heroku run bash
Vous pouvez accéder au serveur heroku comme ssh avec. Si phantomJS réussit dans heroku
~ $ ls api.py Procfile requirements.txt runtime.txt vendor
*** fournisseur *** est généré comme ceci, et PhantomJS y est inclus.
Si ce n'est pas le cas, cela ne fonctionne pas, c'est donc une bonne idée de le vérifier.
## Épilogue
Bien que cela fonctionne localement, il y a de nombreux endroits où PhantomJS est élevé en heroku et cela ne fonctionne pas bien du côté heroku, donc je pense que cela peut rester bloqué, mais faites de votre mieux!
De plus, s'il y a des améliorations ou des erreurs, nous vous serions reconnaissants de les signaler dans la section commentaires.
Twitter:@ymgn_ll
Recommended Posts