Jusqu'à l'utilisation de PhantomJS avec Python sur Heroku

Étant donné que la méthode d'appel de PhantomJS diffère entre l'environnement de développement et l'environnement de production, elle est triée par nom d'hôte.

Ce n'est pas du tout essentiel, et il est seulement nécessaire de passer le chemin pour que PhantomJS puisse être utilisé dans l'environnement de développement, mais en raison de diverses circonstances, le chemin n'a pas pu être transmis à l'environnement de développement, nous allons donc l'implémenter à titre provisoire.

if os.uname()[1] == "local host name":
    driver = webdriver.PhantomJS(executable_path='/Applications/phantomjs-1.9.2-macosx/bin/phantomjs')
else:    
    driver = webdriver.PhantomJS()

Erreur d'exécution

Lorsque j'ai téléchargé la source ci-dessus sur Heroku et l'ai exécutée sans penser à rien, l'erreur suivante s'est produite, comme prévu.

app[web.1]:     driver = webdriver.PhantomJS()
app[web.1]:   File "/app/.heroku/python/lib/python3.4/site-packages/selenium/webdriver/phantomjs/service.py", line 76, in start
app[web.1]:     raise WebDriverException("Unable to start phantomjs with ghostdriver: %s" % e)
app[web.1]: selenium.common.exceptions.WebDriverException: Message: Unable to start phantomjs with ghostdriver: [Errno 2] No such file or directory: 'phantomjs'

Lorsque je suis entré à Heroku et que j'ai confirmé, PhantomJS n'a pas été créé.

bash-3.2$ heroku run bash
Running bash on hogehoge... up, run.3889
~ $ pwd
/app
~ $ ls
app.py		 Procfile  python-stack    requirements.txt  views
ghostdriver.log  python    python-version  runtime.txt
~ $ PhantomJS
bash: PhantomJS: command not found
~ $ Phantomjs
bash: Phantomjs: command not found

Paramètres pour Heroku

Définissez buildpack.

  1. $ heroku config:add BUILDPACK_URL=https://github.com/ddollar/heroku-buildpack-multi.git
  2. touch .buildpacks
  3. echo "https://github.com/heroku/heroku-buildpack-python" >> .buildpacks
  4. echo "https://github.com/stomita/heroku-buildpack-phantomjs" >> .buildpacks

Après cela, téléchargez sur Heroku.

bash-3.2$ git push heroku master
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 335 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Fetching custom git buildpack... done
remote: -----> Multipack app detected
remote: =====> Downloading Buildpack: https://github.com/heroku/heroku-buildpack-python
remote: =====> Detected Framework: Python
remote: -----> Installing runtime (python-3.4.3)
remote: -----> Installing dependencies with pip
remote:        Collecting bottle==0.12.8 (from -r requirements.txt (line 1))
remote:          Downloading bottle-0.12.8.tar.gz (69kB)
remote:        Collecting Jinja2==2.8 (from -r requirements.txt (line 2))
remote:          Downloading Jinja2-2.8-py2.py3-none-any.whl (263kB)
remote:        Collecting lxml==3.4.4 (from -r requirements.txt (line 3))
remote:          Downloading lxml-3.4.4.tar.gz (3.5MB)
remote:        Collecting MarkupSafe==0.23 (from -r requirements.txt (line 4))
remote:          Downloading MarkupSafe-0.23.tar.gz
remote:        Collecting selenium==2.48.0 (from -r requirements.txt (line 5))
remote:          Downloading selenium-2.48.0.tar.gz (805kB)
remote:        Collecting wheel==0.26.0 (from -r requirements.txt (line 6))
remote:          Downloading wheel-0.26.0-py2.py3-none-any.whl (63kB)
remote:        Installing collected packages: bottle, MarkupSafe, Jinja2, lxml, selenium, wheel
remote:          Running setup.py install for bottle
remote:          Running setup.py install for MarkupSafe
remote:          Running setup.py install for lxml
remote:          Running setup.py install for selenium
remote:        Successfully installed Jinja2-2.8 MarkupSafe-0.23 bottle-0.12.8 lxml-3.4.4 selenium-2.48.0 wheel-0.26.0
remote: 
remote: =====> Downloading Buildpack: https://github.com/stomita/heroku-buildpack-phantomjs
remote: =====> Detected Framework: PhantomJS
remote: -----> Extracting PhantomJS 1.9.8 binaries to /tmp/build_57462938b8344afe2a9119824547eac1/vendor/phantomjs
remote: -----> exporting PATH and LIBRARY_PATH
remote: Using release configuration from last framework (PhantomJS).
remote: -----> Discovering process types
remote:        Procfile declares types     -> renderer, web
remote:        Default types for Multipack -> console
remote: 
remote: -----> Compressing... done, 59.0MB
remote: -----> Launching... done, v8
remote:        https://hogehoge.herokuapp.com/ deployed to Heroku
remote: 
remote: Verifying deploy... done.
To https://git.heroku.com/hogehoge.git
   71335d7..c897730  master -> master

Si vous vous connectez à distance à Heroku's bash, vous verrez qu'un dossier «fournisseur» a été créé.

bash-3.2$ heroku run bash
Running bash on hogehoge... up, run.6077
~ $ pwd
/app
~ $ ls
app.py		 Procfile  python-stack    requirements.txt  vendor
ghostdriver.log  python    python-version  runtime.txt	     views
~ $ 

J'ai accédé à l'URL dans cet état et confirmé l'opération en toute sécurité.

Recommended Posts

Jusqu'à l'utilisation de PhantomJS avec Python sur Heroku
Jusqu'à ce que vous puissiez utiliser opencv avec python
Jusqu'à ce que Python fonctionne sur Apache
Notez jusqu'à ce que vous utilisiez emacs avec WSL
Utilisez le pilote Web phantomjs de sélénium avec unittest de python
Notez ce que vous avez fait pour utiliser Flycheck avec Python
[Python] Utiliser JSON avec Python
Grattage avec Python + PhantomJS
Jusqu'à ce que vous utilisiez l'API Kaggle avec Colab
Utiliser DynamoDB avec Python
Utilisez Python 3.8 avec Anaconda
Utiliser python avec docker
Jusqu'à ce que l'application Web créée avec Bottle soit publiée (déployée) sur Heroku
Jusqu'à ce que Python soit installé avec pythonbrew et que Flask s'exécute sur le serveur WSGI
Scraping avec Python, publication sur TwitterBot, exécution régulière sur Heroku
Notes de site pour vous aider à utiliser NetworkX avec Python
Utiliser l'API Trello avec python
Utilisez matplotlib sur Ubuntu 12 et Python
Utiliser l'API Twitter avec Python
Utiliser TUN / TAP avec Python
Utiliser l'API subsonique avec python3
Utiliser Python sur Windows (PyCharm)
Jusqu'à ce que vous créiez un environnement d'apprentissage automatique avec Python sur Windows 7 et que vous l'exécutiez
Jusqu'à ce que vous créiez Python Virtualenv sur Windows et lanciez Jupyter
Jusqu'à ce que vous puissiez installer votre propre bibliothèque Python avec pip
Utilisez Python 3 introduit par l'outil de ligne de commande sur macOS Catalina
Jusqu'à ce que vous utilisiez le système Python 3 sur le serveur de location Sakura (créer un environnement de vérification) Partie 1 Paramètre initial du contrat
Utilisez Numpy, Scipy, scikit-learn avec Heroku
Python: comment utiliser async avec
Créez un bot LINE avec Python + heroku
Utiliser la caméra Point Grey avec Python (PyCapture2)
Utilisez vl53l0x avec RaspberryPi (python)
Jusqu'à ce que vous démarriez Jupyter dans Docker
Jusqu'à ce que vous mettiez Python dans Docker
Utilisez NAIF SPICE TOOL KIT avec Python
python + django + scikit-learn + mecab (1) avec heroku
Ensuite, utilisez Python (Flask) pour Heroku!
Utiliser rospy avec virtualenv dans Python3
python + django + scikit-learn + mecab (2) avec heroku
Python json.loads () renvoie str dans Heroku
Utiliser Python mis en pyenv avec NeoVim
Utilisez Tensorflow 2.1.0 avec Anaconda sur Windows 10!
Utiliser la synthèse vocale Windows 10 avec Python
Jusqu'à ce que vous utilisiez Google Colaboratory
Notes sur l'utilisation de rstrip avec python.
Utiliser OpenCV avec Python 3 dans Window
Jusqu'à traiter de python dans Atom
Premiers pas avec Python 3.8 sous Windows
Sakura utilisant Python sur Internet
Utiliser PostgreSQL avec Lambda (Python + psycopg2)
Jusqu'à ce que tu secoues le rubis avec renpy
Python | Ce que vous pouvez faire avec Python
[Memo] Tweet sur Twitter avec Python
Exécutez régulièrement Python sur Heroku Scheduler
Pour utiliser python, mettez pyenv sur macOS avec PyCall
Obtenez la largeur du div côté serveur avec Selenium + PhantomJS + Python
Exécutez le servo avec Python sur ESP32 (Windows)
Déployez le modèle de reconnaissance faciale Python sur Heroku et utilisez-le depuis Flutter ②