[PYTHON] Überprüfen Sie, ob die Schulhomepage automatisch aktualisiert wird

Einführung

Aufgrund der neuen Coronavirus-Infektion (COVID-19) war die Schule geschlossen und es wäre schön, jederzeit die neuesten Informationen auf der Website der Schule zu aktualisieren. Daher habe ich das Update automatisch erhalten und ein Benachrichtigungssystem für die Klasse LINE erstellt.

Umgebung

ubuntu19.10
Python 3.7.5

Implementierungsmethode

  1. Informieren Sie sich alle 30 Minuten auf der Schulhomepage.
  2. Überprüfen Sie den Unterschied zu den zuletzt erfassten Daten.
  3. Benachrichtigen Sie die Klasse LINE mit LINE. Benachrichtigen Sie, wenn es einen Unterschied gibt

Programm

  1. Informationen erhalten Sie auf der Schulhomepage. (Nehmen Sie Kontakt mit der TOP-Seite und jeder Klasse auf.)
res = requests.get(url1)
res2 = requests.get(url2)
res.encoding = res.apparent_encoding
res2.encoding = res2.apparent_encoding
  1. Überprüfen Sie den Unterschied zu den zuletzt erfassten Daten.
m = "\n" + link
result = list(set(list1) - set(list2))

print("raw" + str(result))

if len(result) > 30:
    result = []

elif len(result) >= 30:
    result = "Zeichenbegrenzung ...(¡>Д<¡)・ ゜ ・"
    result = m + "\n" + result

elif result != []:
    for s in result:
        m = m + "\n" + s
    result = m
  1. Benachrichtigen Sie die Klasse LINE mit LINE. Benachrichtigen Sie, wenn es einen Unterschied gibt
url = "https://notify-api.line.me/api/notify"
headers = {'Authorization': 'Bearer ' + access_token}

payload = {'message': message}
r = requests.post(url, headers=headers, params=payload,)

Das ganze

import re
import requests
import copy
import time
import requests
import datetime


def get_data(url1, url2):
    global res, res2
    res = requests.get(url1)
    res2 = requests.get(url2)
    res.encoding = res.apparent_encoding
    res2.encoding = res2.apparent_encoding


def format_text(text):
    text = re.sub(r'[a-zA-Z0-9]', '', text)
    text = re.sub(r'[!-/:-@[-`{-~]', '', text)
    text = text.replace(' ', '')
    return text


def task1():
    print(datetime.datetime.now())
    text = format_text(res.text)
    text2 = format_text(res2.text)
    global l1, l2
    l1 = text.split()
    l2 = text2.split()
    global result, result2
    result = difference(l1, l_b1, URL1)
    result2 = difference(l2, l_b2, URL2)

    print(result, result2)


def task2():
    global l_b1, l_b2
    l_b1 = copy.deepcopy(l1)
    l_b2 = copy.deepcopy(l2)


def difference(list1, list2, link):
    m = "\n" + link
    result = list(set(list1) - set(list2))

    print("raw" + str(result))

    if len(result) > 30:
        result = []

    elif len(result) >= 30:
        result = "Zeichenbegrenzung ...(¡>Д<¡)・ ゜ ・"
        result = m + "\n" + result

    elif result != []:
        for s in result:
            m = m + "\n" + s
        result = m

    return result


def line(message, access_token):
    url = "https://notify-api.line.me/api/notify"
    headers = {'Authorization': 'Bearer ' + access_token}

    payload = {'message': message}
    r = requests.post(url, headers=headers, params=payload,)


def sent(name, message, token1, token2):
    if message != []:
        line(message, token1)
        line(message, token2)
    else:
        line(name + "==[]", token2)


def main():
    global l_b1, l_b2, URL1, URL2
    l_b1 = []
    l_b2 = []
    URL1 = "URL von HP, die Sie erhalten möchten"
    URL2 = "URL von HP, die Sie erhalten möchten"
    class_line = "Klassen-LINE-Token"
    admin_line = "Mein Zeichen"

    while True:
        get_data(URL1, URL2)

        task1()

        sent("result", result, class_line, admin_line)

        sent("result2", result2, class_line, admin_line)

        task2()

        for i in range(6):
            line("\n" + str(datetime.datetime.now()) + "\n" +
                 "Es funktioniert gut.Vielleicht..." + "\n" + str(i), admin_line)
            time.sleep(300)


if __name__ == '__main__':
    main()

Ich schickte mir alle 5 Minuten die Nachricht "Es funktioniert gut. Vielleicht ...". Ich werde es geheim halten, dass ich es nicht wirklich brauche. (Lacht)

Um ehrlich zu sein, ist die Zeichenbeschränkung angemessen.

Nachtrag

Ich habe main () wie folgt geändert und den Fehler behoben.


def main():
    global l_b1, l_b2, URL1, URL2
    l_b1 = []
    l_b2 = []
    URL1 = "URL von HP, die Sie erhalten möchten"
    URL2 = "URL von HP, die Sie erhalten möchten"
    class_line = "Klassen-LINE-Token"
    admin_line = "Mein Zeichen"

    while True:
        try:
            get_data(URL1, URL2)

            task1()

            sent("result", result, class_line, admin_line)

            sent("result2", result2, class_line, admin_line)

            task2()

            for i in range(6):
                line("\n" + str(datetime.datetime.now()) + "\n" +
                     "Es funktioniert gut.Vielleicht..." + "\n" + str(i), admin_line)
                time.sleep(300)

        except Exception as e:
            try:
                line("\n" + str(e) + "error occurred", admin_line)
            except Exception as e:
                print(e, "error occurred")
            time.sleep(30)

Send () wie folgt geändert.

def sent(name, message, token1, token2):
    try:
        if message != []:
            line(message, token1)
            line(message, token2)
        else:
            line(name + "==[]", token2)
    except Exception as e:
        try:
            line("\n" + str(e) + "error occurred",token2)
        except Exception as e:
            print(e, "error occurred")

Differenz () wie folgt geändert

def difference(list1, list2, link):
    m = "\n" + link
    result = list(set(list1) - set(list2))

    print("raw" + str(result))
    
    if result != []:
        for s in result:
            m = m + "\n" + s
        result = m

    return result
Endprogramm
import re
import requests
import copy
import time
import requests
import datetime


def get_data(URL):
    res = requests.get(URL)
    res.encoding = res.apparent_encoding
    return res


def format_text(text):
    text = re.sub(r"[a-zA-Z0-9]", "", text)
    text = re.sub(r"[!-/:-@[-`{-~]", "", text)
    text = text.replace(" ", "")
    return text


def task1(res, l_b, URL):
    text = format_text(res.text)
    list = text.split()
    result = difference(list, l_b, URL)

    print(result)
    return result, list


def difference(list1, list2, link):
    m = "\n" + link
    result = list(set(list1) - set(list2))
    print("raw" + str(result))
    if result != []:
        for s in result:
            m = m + "\n" + s
        result = m
    return result


def line(message, access_token):
    try:
        url = "https://notify-api.line.me/api/notify"
        headers = {"Authorization": "Bearer " + access_token}

        payload = {"message": message}
        r = requests.post(url, headers=headers, params=payload,)

    except Exception as e:
        try:
            url = "https://notify-api.line.me/api/notify"
            headers = {"Authorization": "Bearer " +Mein Zeichen}

            payload = {"message": e}
            r = requests.post(url, headers=headers, params=payload,)

        except:
            print(e, "\nerror occurred")



def sent(name, message, token1, token2):
    if message != []:
        line(message, token1)
        line(message, token2)
    else:
        line(name + "==[]", token2)

def main():
    l_b1 = []
    l_b2 = []
    URL1 = "URL von HP, die Sie erhalten möchten"
    URL2 = "URL von HP, die Sie erhalten möchten"
    class_line = "Klassen-LINE-Token"
    admin_line = "Mein Zeichen"

    while True:
        try:
            res = get_data(URL1)
            res2 = get_data(URL2)

            print(datetime.datetime.now())

            result, l1 = task1(res, l_b1, URL1)
            result2, l2 = task1(res2, l_b2, URL2)

            sent("result", result, class_line, admin_line)
            sent("result2", result2, class_line, admin_line)

            l_b1 = copy.deepcopy(l1)
            l_b2 = copy.deepcopy(l2)

            for i in range(6):
                line("\n" + str(datetime.datetime.now()) + "\n" +
                     "Es funktioniert gut.Vielleicht..." + "\n" + str(i), admin_line)
                time.sleep(300)

        except Exception as e:

            line("\n" + str(e) + "\nerror occurred", admin_line)

            time.sleep(30)


if __name__ == "__main__":
    main()




# Operationsszene 167335.png 167331.png ~~ Die HP der Schule wurden nie aktualisiert, daher ist es schwer zu wissen, ob sie richtig funktionieren ... ~~ Ich konnte die Operation bestätigen

Am Ende

Ich denke, der Prozess ist nicht schön, weil er sofort entwickelt wurde. Bitte weisen Sie auf Fehler hin. Da die alphanumerischen Symbole und Symbole mit halber Breite gelöscht wurden, wird das Datum usw. nicht angezeigt. Wenn Sie eine Lösung haben, gehen Sie bitte zum Kommentarbereich m (_ _) m

Recommended Posts

Überprüfen Sie, ob die Schulhomepage automatisch aktualisiert wird
Macports easy_install löst die Version automatisch auf und führt sie aus
Beheben Sie einfach die Fehler und Warnungen bei sudo apt-get update
Ermitteln und verarbeiten Sie die Codierung der Textdatei automatisch
Greifen Sie automatisch auf den Fluss in enebular zu und drücken Sie den Abzug