Ich möchte, dass LINE über mein Ranking informiert wird, wenn meine Website Google nach "einem bestimmten Keyword" durchsucht.
Dieses Mal werden wir es auf Windows 10 Home erstellen. Erstellen Sie eine virtuelle Umgebung und installieren Sie die erforderlichen Bibliotheken.
Erstellen Sie eine dedizierte virtuelle Umgebung, damit Ihr Computer nicht mit der Bibliothek in Konflikt gerät. Bitte beachten Sie im Folgenden, wie es gemacht wird. Erstellen Sie eine virtuelle Umgebung für Python
Aktivieren Sie die virtuelle Umgebung, nachdem Sie sie erstellt haben.
Eingabeaufforderung
Scripts\activate
Installieren Sie die Bibliothek für Web Scraping und die Bibliothek für die regelmäßige Ausführung mit Heroku.
Eingabeaufforderung
pip install requests
pip install BeautifulSoup4
pip install apscheduler
Melden Sie sich unten bei LINE an und stellen Sie ein Zugriffstoken aus. Wählen Sie den Token-Namen aus, der zum Zeitpunkt der Benachrichtigung angezeigt wird, und den Gesprächsraum, an den gesendet werden soll. Da ich es diesmal an mich selbst senden werde, habe ich "Benachrichtigung von LINE-Benachrichtigung 1: 1 empfangen" ausgewählt und ausgegeben. Stellen Sie sicher, dass Sie die ausgegebenen Token aufschreiben. (Ich kann es nicht mehr sehen, wenn ich es schließe)
Damit ist die Zusammenarbeit abgeschlossen.
Erstellen Sie eine Python-Datei. Verschieben Sie den Pfad an den Speicherort der erstellten virtuellen Umgebung, da er an der Eingabeaufforderung erstellt wird.
Eingabeaufforderung
type nul > main_proc.py
type nul > clock.py
Nach der Bereitstellung in Heroku wird es regelmäßig ausgeführt. Erstellen Sie daher clock.py, das die Zeitplaninformationen beschreibt.
Die tatsächliche Codierung ist wie folgt. Da dieser Beitrag den Inhalt der LINE-Benachrichtigung enthält, werde ich die Erläuterung des Codes weglassen.
main_proc.py
import requests
from bs4 import BeautifulSoup as bs
import os
line_notify_token = os.environ['LINE_NOTIFY_TOKEN']
def main_proc():
mes = 'Außer Betrieb oder unverarbeitet'
targeturl = 'https://sentreseau.com/'
targetur2 = 'http://sentreseau.com/'
#Header anfordern
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36"}
list_keyword = 'Energieplattform Fukuoka'
url = 'https://www.google.co.jp/search?num=100&q={}'.format(list_keyword)
#Verbinden
response = requests.get(url, headers=headers)
try:
#Überprüfen Sie den HTTP-Statuscode
response.raise_for_status()
except:
mes = 'Ich konnte es heute leider nicht bekommen.'
#Analysieren Sie den abgerufenen HTML-Code
soup = bs(response.content, 'html.parser')
#Holen Sie sich Titel und Links zu Suchergebnissen
ret_link = soup.select('.r > a')
mes = url
for i in range(len(ret_link)):
#Holen Sie sich nur den Link und entfernen Sie das zusätzliche Teil
url_txt = ret_link[i].get('href').replace('/url?q=','')
if (targeturl in url_txt) or (targetur2 in url_txt):
mes = '「{}Als Ergebnis der Suche mit ""{}Das Ranking ist{}Es war ein Ort.'.format(list_keyword, targeturl, i + 1)
break
#LINE benachrichtigen
line_notify(mes)
#Benachrichtigungsfunktion an LINE
def line_notify(message):
line_notify_api = 'https://notify-api.line.me/api/notify'
payload = {'message': message}
headers = {'Authorization': 'Bearer ' + line_notify_token}
requests.post(line_notify_api, data=payload, headers=headers)
if __name__ == "__main__":
main_proc()
clock.py
import os,main_proc
from apscheduler.schedulers.blocking import BlockingScheduler
sched = BlockingScheduler()
if __name__ == "__main__":
#07 jeden Tag:Lauf auf 30
sched.add_job(main_proc.main_proc, 'cron', hour=7, minute=30)
sched.start()
#Lauf jede Minute
#sched.add_job(main_proc.main_proc, 'interval', minutes=1)
Die folgende Seite ist hilfreich für die Erstellung von Heroku. http://www.dcom-web.co.jp/technology/heroku1/
Wenn Sie den folgenden Befehl ausführen, wird der Anmeldebrowser gestartet. Melden Sie sich also an.
heroku login
Heroku erstellen App-Namen
Fügen Sie ein Buildpack hinzu, um Python auf Heroku auszuführen.
heroku buildpacks:add heroku/python -ein App-Name
Die Standardeinstellung ist UTC. Stellen Sie sie daher auf Asien / Tokio ein.
heroku config:add TZ=Asia/Tokyo -ein App-Name
Es ist nicht gut, das Zugriffstoken direkt in den Code zu schreiben. Speichern Sie es daher in der Umgebungsvariablen.
heroku config:set LINE_NOTIFY_TOKEN=Zugangstoken-ein App-Name
Überprüfen Sie mit dem folgenden Befehl, ob es richtig eingestellt ist.
heroku config -ein App-Name
Eingabeaufforderung
pip freeze > requirements.txt
(Nur beim ersten Mal) Erstellen Sie eine erste Git-Datei. Im Arbeitsordner wird ein Ordner ".git" erstellt.
git init
(Nur beim ersten Mal) Erstellen Sie ein Remote-Repository.
heroku git:remote -ein App-Name
Fügen Sie Ihre Änderungen dem Index hinzu.
git add .
git Dateinamen hinzufügen
Verpflichten
git commit -m "Schreiben Sie, wenn Sie einen Kommentar haben"
In Heroku bereitstellen.
git push heroku master
Lassen Sie uns den Vorgang nach der Bereitstellung überprüfen.
Eingabeaufforderung
heroku run python clock.py
Es funktioniert richtig. Wenn wir nach "Power Platform Fukuoka" suchen, scheint es zum Zeitpunkt der Veröffentlichung anscheinend der 4. zu sein.
Nach der Bereitstellung in Heroku konnten wir den Vorgang bestätigen. Starten Sie also die Uhr, damit die für die periodische Ausführung codierte clock.py regelmäßig ausgeführt wird.
Eingabeaufforderung
heroku ps:scale clock=1
Wenn dort steht "Skalieren von Dynos ... fertig, jetzt läuft Uhr um 1: Frei", ist es in Ordnung.
Das war's, jeden Morgen um 7:30 Uhr wird LINE über das Ranking informiert. Glückwunsch Glückwunsch.
Übrigens, um die Uhr auf Heroku zu stoppen, gehen Sie wie folgt vor:
Eingabeaufforderung
heroku ps:scale clock=0
Recommended Posts