Une histoire sur l'exécution de Python sur PHP sur Heroku

Ceci est le premier message de Qiita. Cette fois, je voudrais garder un mémorandum sur la façon de "exécuter Python sur PHP sur Heroku", sur lequel je suis tombé par hasard pendant environ 3 heures à un mauvais endroit. J'écris avec la mort cérébrale. Ce serait formidable si vous pouviez voir les erreurs typographiques avec un œil chaleureux.

Pensées

Au début, je me demandais si je pouvais publier des informations de grattage sur la page Web. Mais le scraping est facile si vous l'écrivez en Python! C'est l'entrée de la porte de l'enfer qui a commencé.

Grattage avec Python

Je pensais que ce serait bien d'avoir les meilleures nouvelles pour le moment, j'ai donc écrit le code suivant.

# coding: utf-8

import requests
from bs4 import BeautifulSoup

#Obtenez l'ID de page des principales actualités actuelles
toppage_url = "https://news.yahoo.co.jp/"
html = requests.get(toppage_url)
soup = BeautifulSoup(html.content, "html.parser")
topic_element = soup.select_one("li.topicsListItem")
news_link = topic_element.find("a").get("href")
news_id = int(str(news_link).replace("https://news.yahoo.co.jp/pickup/",""))

#Obtenir des informations sur les sujets d'actualité
news_url = f"https://news.yahoo.co.jp/pickup/{news_id}"
html = requests.get(news_url)
soup = BeautifulSoup(html.content, "html.parser")
news_element = soup.select_one("p.pickupMain_articleSummary")
print(news_element.text)

Obtenir la sortie Python en utilisant exec () en PHP

Vous pouvez exécuter des commandes de ligne de commande avec exec et placer la sortie dans des variables. Écrivez PHP comme suit.

<?php header("Content-type: text/html; charset=utf-8"); ?>
<!doctype html>
<html lang="ja">
<head>
	<meta charset="utf-8">
	<title>Python-PHP</title>
</head>
<body>
<?php
    exec("export LANG=ja_JP.UTF-8");
    exec('python news.py', $output);
    echo '<p>',$output[0],'</p>';
    return false;
?>
</body>
</html>

L'important est la partie ** exec ("export LANG = ja_JP.UTF-8"); **.

Histoire du code de personnage

UTF-8, qui existe depuis un certain temps. C'est la première des batailles difficiles. PHP dit essentiellement que le code de caractère doit être écrit en ** UTF-8 **. La sortie Python devait également être unifiée avec utf-8, qui était bloquée là au début. (Le côté Python était Shift-JIS)

Déployez-vous sur Heroku! Devrait être une tempête d'erreur

C'est fait! Déployez et voyez ce qui se passe! Lorsque je déploie et ouvre l'URL ...

\\ Actuellement, Heroku ne peut pas traiter la demande //

Oui. Voici l'erreur. Le déploiement a réussi, mais j'étais dans un état nande. L'essentiel est que si vous souhaitez exécuter PHP et Python sur Heroku en même temps, vous aurez besoin de deux BuildPacks. e4d1a639c4938b5f126d5891784286ff.png Mettons-le comme ça. Cette fois, ** les pages Web sont les principales **, donc l'ordre est PHP-> Python.

Cela devrait être bien! Ici et là! Et quand j'essaye de déployer

\\ Deploy failed //

Hmmm ça. Quand j'ai attrapé le journal cette fois, j'ai trouvé le contenu suivant.

-----> App not compatible with buildpack: https://buildpack-registry.s3.amazonaws.com/buildpacks/heroku/python.tgz
       More info: https://devcenter.heroku.com/articles/buildpacks#detection-failure
 !     Push failed

Une recherche pour cela révèle que les fichiers nécessaires à l'application Python sont manquants. Créons-le. Voici ce dont vous avez besoin pour ce code Python:

#requirement.txt
beautifulsoup4==4.9.1
requests==2.24.0
#runtime.txt
python-3.7.7

Le déploiement avec cela a bien fonctionné.

Impressions de terminer la course

J'ai passé une journée à me débattre avec les codes des personnages et à créer un environnement pour Heroku. Je déteste le japonais. Au fait, lorsque j'ai créé un environnement de test avec XAMPP, j'étais plus préoccupé par le code des caractères que par Heroku. Cette fois, je suis content car l'affichage a réussi pour le moment.

Matériel de référence

Sites informés que BuildPack est requis https://stackoverflow.com/questions/12126439/run-python-and-php-in-a-single-heroku-app-procfile

Un site qui connaît les fichiers nécessaires pour préparer l'environnement d'exécution de Python sur Heroku https://teratail.com/questions/258801

(Un site qui a aidé à gérer les erreurs secrètes) Après le code de déploiement = H14 desc = "Aucun processus Web en cours d'exécution" https://qiita.com/rebi/items/efd1c36f0a9e46222d80

Recommended Posts

Une histoire sur l'exécution de Python sur PHP sur Heroku
Un mémo qui a fait un tutoriel pour exécuter python sur heroku
Une histoire sur Python pop and append
L'histoire de vouloir afficher des annonces liées à des articles sur Jubatus
Un mémorandum pour toucher Python Flask avec Heroku
Une histoire sur la modification de Python et l'ajout de fonctions
Une histoire d'essayer un monorepo (Golang +) Python avec Bazel
Une histoire sur un débutant Linux mettant Linux sur une tablette Windows
À propos de Perl, Python, PHP, Ruby
Mémorandum sur la corrélation [Python]
Un mémorandum sur le simulacre de Python
Une note sur [python] __debug__
J'ai pensé à un cours pour débutants sur Python basé sur des jeux blockchain
Un mémorandum où je suis tombé sur mon HEROKU & Python personnel (Flask)
Une histoire sur la façon de spécifier un chemin relatif en python.
Une histoire sur un amateur faisant une rupture de bloc avec python (kivy) ②
[GCP] Un mémorandum lors de l'exécution d'un programme Python avec Cloud Functions
Une histoire sur un amateur faisant une rupture de bloc avec python (kivy) ①
Une histoire sur la tentative d'implémentation de variables privées en Python.
Une histoire sur un débutant de GCP essayant de créer un serveur Micra avec GCE
Une histoire à propos d'un débutant en python coincé avec aucun module nommé'ttp.server '
Construire un environnement Python sur Mac
Construire un environnement Python sur Ubuntu
Python: une note sur les classes 1 "Résumé"
Créer un environnement Python sur Mac (2017/4)
python + django + scikit-learn + mecab (1) avec heroku
python + django + scikit-learn + mecab (2) avec heroku
Créer un environnement python dans centos
Python json.loads () renvoie str dans Heroku
L'histoire de l'utilisation de la réduction de Python
Créer un environnement python3 sur CentOS7
Une note sur mock (bibliothèque fictive Python)
Exécutez régulièrement Python sur Heroku Scheduler
Une histoire sur l'ajout d'une API REST à un démon créé avec Python
Facile! Implémenter un bot Twitter qui s'exécute sur Heroku en Python
L'histoire de la mise en place de Chrome OS (et non de Chrome) dans Surface GO
Une histoire sur le développement d'un type logiciel avec Firestore + Python + OpenAPI + Typescript
Une histoire sur la tentative d'exécuter plusieurs versions de Python (édition Mac)
Remarques sur l'utilisation de la saisie semi-automatique lors de l'exécution interactive de Python sous Windows
Une histoire sur le fait de vouloir penser à des personnages déformés dans GAE / P
Tout, de la création d'un environnement Python à son exécution sous Windows
Une histoire d'essayer d'exécuter JavaScripthon sur Windows et d'abandonner.
Migrer les applications Django exécutées sur Python 2.7 vers Python 3.5
Une histoire sur un remodelage magique qui met Lubuntu dans un Chromebook
Construire un environnement python sur MacOS (Catallina)
Créez un environnement python sur votre Mac
Un programmeur Java a étudié Python. (À propos du type)
Une histoire sur l'apprentissage automatique avec Kyasuket
Un mémo contenant Python2.7 et Python3 dans CentOS
Créer un serveur CGI fonctionnant sur Python 3 sur Docker
Une histoire sur la création d'une chaîne anonyme avec Slack à partir de zéro connaissance
L'histoire de l'abandon d'essayer de se connecter à MySQL en utilisant Heroku
Un peu plus de détails sur la notation d'inclusion de python
Exécutez le code Python sur A2019 Community Edition
Créer un environnement Python + OpenCV sur Cloud9
L'histoire du traitement A du blackjack (python)
[Python] Une barre de progression sur le terminal