Für die Gruppe LINE mit Freunden Wir werden einen Mechanismus erstellen, um summende Tweets zur geplanten Zeit zu senden.
LINE Notify API
Durch die Verknüpfung mit LINE Notify können LINE-Benutzer problemlos Benachrichtigungen über Dienste erhalten.
[Quelle]: LINE Notify
Es scheint.
Wenn Sie es tatsächlich verwenden, erhalten Sie eine Nachricht von einem Konto namens "LINE Notify" wie folgt.
Befolgen Sie die Schritte unter dem folgenden Link, um LINE Notify
einsatzbereit zu machen.
[Super einfach] Versuchen Sie es mit LINE notify
Ich habe mich gefragt, ob ich mit den summenden Tweets mit der "Twitter API" mein Bestes geben soll. Es schien schmerzhaft zu sein, also beschloss ich, von der bestehenden Ranking-Site zu kratzen.
Twitter-Beliebtheits-Ranking-Site → [TwTimez]
import requests
from bs4 import BeautifulSoup
#Holen Sie sich die kräftigsten Tweets
def bazz_get():
#URL für den Zugriff
url = "http://www.twtimez.net/index.html"
#Greifen Sie auf die URL zu
html = requests.get(url)
#Behandeln Sie HTML mit schöner Suppe
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 "Eine Art Fehler"
#Senden Sie eine Nachricht an Line
def send_line(Bazz):
notify_url = "https://notify-api.line.me/api/notify"
token = "Zugangstoken"
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())
Was interessiert dich? Es ist mein erstes Mal. Es war ein bisschen, wenn ich "Schöne Suppe" benutzte.
An den folgenden Stellen ziehe ich Klassen und Tags mit den gewünschten Informationen aus HTML ab.
for detalis in soup.find(class_="details details2"):
print(detalis.get("href"))
return str(detalis.get("href"))
Suchen Sie die Klasse oder das Tag mit den gewünschten Informationen, indem Sie die mit GIF beschriebenen Schritte ausführen. Sie können das HTML der Seite anzeigen, indem Sie die Taste "F12" drücken.
Wenn bisher kein Problem vorliegt, wird nach der Ausführung eine Nachricht an LINE gesendet.
AWS Wir werden einen Mechanismus erstellen, um eine Nachricht automatisch zu senden, wenn sie mithilfe von AWS-Diensten geplant wird.
Vielleicht ist es kostenlos. Wenn Sie später eine Rechnung erhalten, zahlen Sie die Studiengebühr und hören Sie schnell auf.
AWS Lambda
Sie können Ihren Code ausführen, ohne an den Server denken zu müssen. Sie zahlen nur für die tatsächliche Rechenzeit, die Sie verwenden.
Es scheint. Ich werde den Code, den ich dieses Mal geschrieben habe, hier einfügen.
Amazon CloudWatch
Kommentarvideo zu Amazon Cloud Watch
Beobachtbarkeit von AWS-Ressourcen und -Anwendungen in AWS und vor Ort
Es scheint. Ich weiß es nicht. Kurz gesagt, ich denke, Sie können leicht etwas überwachen, was Sie gemacht haben, und verschiedene Dinge tun. Auf Lambda erstellte Funktionen können regelmäßig zur eingestellten Zeit ausgeführt werden.
Melden Sie sich bei der Lambda-Konsole an und wählen Sie Funktion erstellen Geben Sie ihm einen Namen und fahren Sie mit dem nächsten fort.
Es scheint, dass Sie jeden Ordner mit ~~ Zip hochladen können, Ich habe nicht so viel gemacht, also kopiere ich den obigen Code und füge ihn in die Funktion ein. ~~
Es hat nicht funktioniert, weil ich ein Modul verwendet habe. Darüber hinaus müssen Sie Ihren Code hinzufügen oder ändern.
Laden Sie den Code auch als ".zip-Datei" hoch, anstatt "den Code inline zu bearbeiten".
import requests
from bs4 import BeautifulSoup
def bazz_get():
#URL für den Zugriff
url = "http://www.twtimez.net/index.html"
#Greifen Sie auf die URL zu
html = requests.get(url)
#Behandeln Sie HTML mit schöner Suppe
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 "Eine Art Fehler"
def send_line(Bazz):
notify_url = "https://notify-api.line.me/api/notify"
token = "Zugangstoken"
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())
Unten ist die Funktion, die tatsächlich von Lambda aufgerufen wird. Es wäre schön gewesen, ein separates Skript zu haben, das es nur ausführt. Es funktioniert gut und ich habe keine Pläne, es in Zukunft zu erweitern, also habe ich Folgendes getan. Argumente sind erforderlich, um es mit Lambda aufzurufen.
def bot(event, lambda_context):
send_line(bazz_get())
Schreiben Sie den Python-Skriptnamen und den Methodennamen, den Sie aufrufen möchten, in den Upload-Ziel-Handler, indem Sie sie mit .
verbinden.
Speichern Sie das Modul zunächst in einem beliebigen Verzeichnis.
Wechseln Sie zunächst in das Verzeichnis, das Sie speichern möchten.
An der Eingabeaufforderung ausführen
CD jedes Verzeichnis
Speichern Sie danach das in Python Script verwendete Modul im aktuellen Verzeichnis.
An der Eingabeaufforderung ausführen
pip install beautifulsoup4 -t .
pip install requests -t .
Als nächstes kommt die Zip-Komprimierung. Komprimieren Sie das Python-Skript und das Modul, das Sie hochladen möchten. Wenn Sie eine Zip-Komprimierung für den Ordner durchführen, in dem alles gespeichert ist, wird ein zusätzlicher Ordner für eine Ebene erstellt. Wählen Sie alle aus und komprimieren Sie sie wie ein GIF-Bild.
CloudWatch Events
Wählen Sie als Nächstes "Trigger hinzufügen", um mit CloudWatch zu arbeiten. (Sie können sich auch bei der CloudWatch-Konsole anmelden und separate Einstellungen vornehmen.)
Unter dem folgenden Link erfahren Sie, wie Sie den Zeitplan festlegen (wann der Code ausgeführt werden soll). Schedule Expressions for Rules
Melden Sie sich über die Konsole bei CloudWatch an Wenn Sie eine neue Regel erstellen, sieht diese wie im Bild unten aus. Es ist leicht zu verstehen, da es zeigt, wann es ausgeführt werden muss.
Wie Sie aus dem obigen Bild sehen können, wird das Wort GMT nach der Ausführungszeit geschrieben.
Es scheint, dass es in Japan einen Unterschied von 9 Stunden zur Zeit gibt. Es scheint also nutzlos zu sein, wenn Sie die Zeit nicht unter Berücksichtigung des Zeitunterschieds einstellen.
[Referenzlink]: [AWS] Erläuterung des Formats des CloudWatch-Cron-Ausdrucks oder des Ratenausdrucks
Alle waren voll Shikato. Warum?
Postskriptum 2019/12/07
Tatsächlich sind Tweets mit einer großen Anzahl von RTs und Favoriten alle vom Kampagnentyp. .. .. Ich war wütend, weil Lawsons RT-Kampagne jeden Tag zur Gruppenlinie floss.
Programm, das Ihnen am Morgen auf LINE (Python) beibringt, was Sie wissen möchten [Python] Verwendung der BeautifulSoup / Basic-Methodenliste | Scraping Ich habe versucht, AWS Lambda mit Python zu verwenden. Erläuterung des Ladens der Bibliothek und Vorsichtsmaßnahmen für Umgebungsvariablen.
Recommended Posts