Pour le groupe LINE avec des amis Nous allons créer un mécanisme pour envoyer des tweets bourdonnants à l'heure prévue.
LINE Notify API
En se connectant à LINE Notify, les utilisateurs de LINE pourront facilement recevoir des notifications de services.
[Source]: LINE Notify
Il semble.
Lorsque vous l'utilisez réellement, vous recevrez un message d'un compte appelé «LINE Notify» comme celui-ci.
Suivez les étapes du lien ci-dessous pour que «LINE Notify» soit prêt à être utilisé. [Super facile] Essayez d'utiliser LINE notify
Je me demandais si je devais faire de mon mieux avec les tweets bourdonnants en utilisant Twitter API
,
Cela semblait douloureux, alors j'ai décidé de gratter le site de classement existant.
Site de classement de popularité Twitter → [TwTimez]
import requests
from bs4 import BeautifulSoup
#Recevez les tweets les plus vigoureux
def bazz_get():
#URL d'accès
url = "http://www.twtimez.net/index.html"
#Accéder à l'URL
html = requests.get(url)
#Manipulez le HTML avec une belle soupe
soup = BeautifulSoup(html.text, "html.parser")
try:
for detalis in soup.find(class_="details details2"):
print(detalis.get("href"))
return str(detalis.get("href"))
except:
return "Une sorte d'erreur"
#Envoyer un message à Line
def send_line(Bazz):
notify_url = "https://notify-api.line.me/api/notify"
token = "Jeton d'accès"
headers = {"Authorization": "Bearer " + token}
message = "\r\n" + Bazz
payload = {"message": message}
requests.post(notify_url, headers=headers, params=payload)
if __name__ == "__main__":
send_line(bazz_get())
De quoi vous souciez-vous? C'est ma première fois. C'était un peu si j'utilisais "Beautiful Soup".
Dans les endroits suivants, je tire des classes et des balises qui contiennent les informations que je veux du HTML.
for detalis in soup.find(class_="details details2"):
print(detalis.get("href"))
return str(detalis.get("href"))
Recherchez la classe ou la balise contenant les informations souhaitées en suivant la procédure que vous effectuez avec GIF. Vous pouvez voir le html de la page en appuyant sur «F12 Key».
S'il n'y a pas de problème jusqu'à présent, un message sera envoyé à LINE après l'exécution.
AWS Nous allons créer un mécanisme pour envoyer automatiquement un message lorsqu'il est planifié à l'aide des services AWS.
C'est peut-être gratuit. Si vous recevez une facture plus tard, payez les frais d'étude et arrêtez rapidement.
AWS Lambda
Vidéo de commentaire AWS Lambda
Vous pouvez exécuter votre code sans avoir à penser au serveur. Vous ne payez que pour le temps de calcul réel que vous utilisez.
Il semble. J'insérerai ici le code que j'ai écrit cette fois.
Amazon CloudWatch
Vidéo de commentaire Amazon Cloud Watch
Observabilité des ressources et des applications AWS sur AWS et sur site
Il semble. Je ne sais pas. En bref, je pense que vous pouvez facilement surveiller quelque chose que vous avez fait et faire diverses choses. Les fonctions créées sur Lambda peuvent être exécutées périodiquement à l'heure définie.
Connectez-vous à la console Lambda
et sélectionnez Créer une fonction
Donnez-lui un nom et passez au suivant.
Il semble que vous pouvez télécharger chaque dossier avec ~~ Zip, Je n'ai pas fait grand chose, alors je vais copier et coller le code ci-dessus dans la fonction. ~~
Cela n'a pas fonctionné parce que j'utilisais un module. De plus, vous devez ajouter ou modifier votre code.
De plus, téléchargez le code sous forme de «fichier .zip» au lieu de «modifier le code en ligne».
import requests
from bs4 import BeautifulSoup
def bazz_get():
#URL d'accès
url = "http://www.twtimez.net/index.html"
#Accéder à l'URL
html = requests.get(url)
#Manipulez le HTML avec une belle soupe
soup = BeautifulSoup(html.text, "html.parser")
try:
for detalis in soup.find(class_="details details2"):
print(detalis.get("href"))
return str(detalis.get("href"))
except:
return "Une sorte d'erreur"
def send_line(Bazz):
notify_url = "https://notify-api.line.me/api/notify"
token = "Jeton d'accès"
headers = {"Authorization": "Bearer " + token}
message = "\r\n" + Bazz
payload = {"message": message}
requests.post(notify_url, headers=headers, params=payload)
def bot(event, lambda_context):
send_line(bazz_get())
Vous trouverez ci-dessous la fonction réellement appelée par Lambda. Cela aurait été bien d'avoir un script séparé qui ne l'exécute, Cela fonctionne bien et je n'ai pas l'intention de l'étendre à l'avenir, alors j'ai fait ce qui suit. Des arguments sont nécessaires pour l'appeler avec Lambda.
def bot(event, lambda_context):
send_line(bazz_get())
Écrivez le nom du script Python et le nom de la méthode que vous souhaitez appeler dans le gestionnaire de destination de téléchargement en les connectant avec .
.
Tout d'abord, enregistrez le module dans n'importe quel répertoire.
Tout d'abord, accédez au répertoire que vous souhaitez enregistrer.
Exécuter à l'invite de commande
cd n'importe quel répertoire
Après cela, enregistrez le module utilisé dans Python Script dans le répertoire actuel.
Exécuter à l'invite de commande
pip install beautifulsoup4 -t .
pip install requests -t .
Vient ensuite la compression Zip. Compressez le script et le module Python que vous souhaitez télécharger. Si vous effectuez une compression Zip sur le dossier qui stocke tout, un dossier supplémentaire pour une couche sera créé. Sélectionnez tout et compressez comme une image GIF.
CloudWatch Events
Ensuite, sélectionnez «Ajouter un déclencheur» pour travailler avec CloudWatch. (Vous pouvez également utiliser l'approche consistant à vous connecter à la console CloudWatch et à définir des paramètres distincts.)
Veuillez vous référer au lien ci-dessous pour savoir comment définir le calendrier (quand exécuter le code). Schedule Expressions for Rules
Connectez-vous à CloudWatch depuis la console Si vous créez une nouvelle règle, elle ressemblera à l'image ci-dessous. Il est facile à comprendre car il montre quand exécuter.
Comme vous pouvez le voir sur l'image ci-dessus, le mot GMT est écrit après l'heure d'exécution.
Il semble qu'il y ait un décalage de 9 heures par rapport à l'heure au Japon, il semble donc que ce soit inutile si vous ne réglez pas l'heure compte tenu du décalage horaire.
[Lien de référence]: [AWS] Explication du format de l'expression cron CloudWatch ou de l'expression de taux
Tous étaient des shikato complets. Pourquoi?
07/12/2019 postscript
En fait, les tweets avec un grand nombre de RT et de favos sont tous de type campagne. .. .. J'étais en colère parce que la campagne RT de Lawson coulait tous les jours sur la ligne du groupe.
Programme qui vous apprend ce que vous voulez savoir le matin sur LINE (Python) [Python] Comment utiliser la liste des méthodes BeautifulSoup / Basic | Scraping J'ai essayé d'utiliser AWS Lambda avec Python. Explication du chargement de la bibliothèque et précautions pour les variables d'environnement.
Recommended Posts