[Python] Lassen Sie sich täglich von LINE über das Ranking der Suchergebnisse auf Ihrer Website informieren.

Was du machen willst

Ich möchte, dass LINE über mein Ranking informiert wird, wenn meine Website Google nach "einem bestimmten Keyword" durchsucht.

Erstellen Sie eine Umgebung

Dieses Mal werden wir es auf Windows 10 Home erstellen. Erstellen Sie eine virtuelle Umgebung und installieren Sie die erforderlichen Bibliotheken.

Erstellen Sie eine virtuelle Umgebung

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

Bibliotheksinstallation

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

Stellen Sie Token für die LINE-Zusammenarbeit aus

Melden Sie sich unten bei LINE an und stellen Sie ein Zugriffstoken aus. LINE Notify - Google Chrome 2020_06_16 14_02_59.png 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) LINE Notify - Google Chrome 2020_06_16 14_06_59.png

Damit ist die Zusammenarbeit abgeschlossen. LINE Notify - Google Chrome 2020_06_16 14_10_55.png

Programmerstellung

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)

In Heroku bereitstellen

Die folgende Seite ist hilfreich für die Erstellung von Heroku. http://www.dcom-web.co.jp/technology/heroku1/

Melden Sie sich bei Heroku an

Wenn Sie den folgenden Befehl ausführen, wird der Anmeldebrowser gestartet. Melden Sie sich also an.

heroku login

Heroku _ Login - Google Chrome 2020_06_16 15_31_28.png

Erstellen Sie eine App

Heroku erstellen App-Namen

Buildpack hinzufügen

Fügen Sie ein Buildpack hinzu, um Python auf Heroku auszuführen.

heroku buildpacks:add heroku/python -ein App-Name

Ändern Sie die Zeitzone.

Die Standardeinstellung ist UTC. Stellen Sie sie daher auf Asien / Tokio ein.

heroku config:add TZ=Asia/Tokyo -ein App-Name

Speichern Sie das LINE-Zugriffstoken in einer Umgebungsvariablen

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

Erstellen Sie eine Datei, um mit Heroku zu arbeiten

Eingabeaufforderung


pip freeze > requirements.txt

In Heroku bereitstellen

(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.

Starten Sie die regelmäßige Ausführung

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.

PS

Übrigens, um die Uhr auf Heroku zu stoppen, gehen Sie wie folgt vor:

Eingabeaufforderung


heroku ps:scale clock=0

Recommended Posts

[Python] Lassen Sie sich täglich von LINE über das Ranking der Suchergebnisse auf Ihrer Website informieren.
Verwenden Sie AWS Lambda, um Nachrichten zu kratzen und LINE regelmäßig über Updates zu informieren [Python]
Sie suchen in der Befehlszeile nach commandlinefu
[Beispiel für eine Python-Verbesserung] In 2 Wochen wurden die Grundlagen von Python auf einer kostenlosen Website erlernt
Python-Skript, das den Status des Servers über den Browser überprüfen kann
Streamen Sie Twitter-Suchergebnisse wie eine bestimmte Video-Site [Python]
Google sucht mit Python nach der Zeichenfolge in der letzten Zeile der Datei
[Python] LINE-Benachrichtigung über die neuesten Informationen mithilfe der automatischen Suche von Twitter
Holen Sie sich die Anzahl der Leser von Artikeln über Mendeley in Python
[Python] Erstellen Sie ein Skript, das FeedParser und LINE Notify verwendet, um LINE über die neuesten Informationen zum neuen Koronavirus des Ministeriums für Gesundheit, Arbeit und Soziales zu informieren.
[Python] Untersuchen Sie die Eigenschaften der Titel der Top-Websites in den Google-Suchergebnissen
Wenn Sie einen Singleton in Python möchten, stellen Sie sich das Modul als Singleton vor
Erhalten Sie eine Liste der Ergebnisse der Parallelverarbeitung in Python mit Starmap
Erstellen Sie eine Python-Umgebung auf Ihrem Mac
Durchsuche das Labyrinth mit dem Python A * -Algorithmus
[Python] [Meta] Ist der Python-Typ ein Typ?
Auf der Suche nach dem schnellsten FizzBuzz in Python
Die Geschichte der Verarbeitung A von Blackjack (Python)
[Python] Ein Fortschrittsbalken auf dem Terminal
Verschiedene Möglichkeiten, die letzte Zeile einer CSV-Datei in Python zu lesen
Lassen Sie Python die durchschnittliche Punktzahl einer Seite mithilfe der PageSpeed Insights-API messen
Erstellen eines LINE BOT, um zusätzliche AtCoder-Wettbewerbe mit AWS zu benachrichtigen
Benachrichtigen Sie regelmäßig den Verarbeitungsstatus von Raspberry Pi mit Python → Google Spreadsheet → LINE
Wie viele Arten von Python haben Sie in Ihrem MacOS? Ich hatte 401 Typen.
Installieren Sie separat eine Version von Python, die nicht auf Ihrem Mac vorinstalliert ist
[Python] Ein Programm, das die Differenz zwischen diagonalen Gesamtwerten berechnet
Zeichnen Sie ein Faltlinien- / Streudiagramm mit Python Matplotlib für die CSV-Datei (2 Spalten).