Zum Inhalt springen

vBulletin Post Checker

Hallo!

Ich habe mich mal an ein kleines vBulletin Python Script gesetzt, das regelmäßig überprüft ob neue Posts entstanden sind. Als Praxisbeispiel nehme ich hier: https://www.free-hack.com

Funktionsweise

def fetch_html():
    username = "username"
    password = "password"

    cj = cookielib.CookieJar()
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
    login_data = urllib.urlencode({'vb_username' : username, 'vb_password' : password})
    opener.open('https://www.free-hack.com', login_data)
    resp = opener.open('https://www.free-hack.com/forum.php')
    html = resp.read()
    soup = BeautifulSoup(html, 'html.parser')
    search = soup.find_all("a", class_="threadtitle")
    search1 = str(search)
    return search1

Das Script loggt sich beim Ziel ein (mit der Angabe der korrekten Form Namen natürlich), öffnet die Ziel URL (bspw. https://www.free-hack.com/forum.php), parst den HTML Quelltext und sucht nach explizit Links der Klasse  „threadtitle“, da dies die Beiträge in den jeweiligen Themen und Kategorien sind. Der geparste Code wird zudem noch zu einem String konvertiert.

def write_html(html):
    file = open("page.html", "w")
    file.write(html)
    file.close()

Die Datei „page.html“ wird geöffnet bzw. erstellt, der String wird in die Datei geschrieben und die Datei wird wieder geschlossen.

def read_html():
    with open('page.html','r') as f:
        return f.read()

Die Datei „page.html“ wird geöffnet und gelesen.

def monitor():
    write_html(fetch_html())
    while True:
        time.sleep(5)
        new_html = fetch_html()
        if new_html == read_html():
            print('Nichts hat sich geändert')
        else:
            print('Etwas hat sich geändert')
            root = Tkinter.Tk()
            root.withdraw()
            messagebox.showinfo("Information", "Etwas hat sich verändert!")
            time.sleep(5)
            root.quit()
            write_html(new_html)

Die Methode write_html(fetch_html()) wird aufgerufen und der Wert, den fetch_html() zurück gibt, wird übergeben. Dann startet eine neue Abfrage von fetch_html() und es wird überprüft, ob der neue String von fetch_html() mit dem alten String (der in die Datei geschrieben wurde) übereinstimmt. Falls dies der Fall ist, wird natürlich ausgegeben, dass sich nichts geändert hat. Falls nicht hat sich etwas geändert und das wird dann auch (in einem grafischen Fenster mit dem Titel „Information“ und der Ausgabe „Etwas hat sich verändert“) ausgegeben. Nach 5 Sekunden wird das Fenster geschlossen. Dann wird erneut write_html(new_html) aufgerufen (um eine neue Datei zu schreiben) damit die Schleife erneut durchlaufen kann.

 

Download

Sei der Erste der einen Kommentar abgibt

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.