Das Programm sollte in dem Terminal zu 99.9 % laufen. Die IDLE weiss ich nicht.
Die Ausgabe ist schön und farbig dargestellt.
Bevor das Programm ausgeführt werden kann muss man noch den Benutzername und das Passwort im Code angeben.
Ich freue mich auf ein Feedback und werde neue Ideen umsetzen versuchen und den Code neu posten.
Code: Alles auswählen
from bs4 import BeautifulSoup
from urllib.request import urlopen
from termcolor import colored
import requests
import re
import shutil
terminal_länge, _ = shutil.get_terminal_size()
def status_parser():
webseite = urlopen("https://www.python-forum.de/index.php")
html = webseite.read().decode()
soup = BeautifulSoup(html, "html.parser")
werte = ["Themen insgesamt", "Beiträge insgesamt", "Mitglieder insgesamt", "neuestes Mitglied"]
ausgabetext = ""
abtrennung("Forumstatistik")
for text in werte:
ausgabetext += text + ": " + soup.find("div", "statistics").p.find(text=re.compile(text)).next.text + "\n"
print(ausgabetext[:-1])
print("\n")
def abtrennung(text):
print(colored(text, "green"))
def online_benutzer_parser():
with requests.Session() as session:
benutzerdaten = {"username": "dein-benutzername",
"password": "dein-passwort",
"autologin": "on",
"login": "Anmelden"
}
users = []
aktivitäten = []
session.post("https://www.python-forum.de/ucp.php?mode=login", data=benutzerdaten)
html = session.get("https://www.python-forum.de/viewonline.php").text
soup = BeautifulSoup(html, "html.parser")
abtrennung("Benutzer die online sind")
for tag in soup.find("div", "forumbg forumbg-table").table.tbody.find_all("tr"):
try:
user = tag.td.a.next
except AttributeError:
user = tag.td.span.next
users.append(user)
for tag in soup.find("div", "forumbg forumbg-table").table.tbody.find_all("tr"):
aktivität = tag.contents[3].a.next
aktivitäten.append(aktivität)
max_länge = len(max(users, key=len))
for i, a in zip(aktivitäten, users):
# anzahl = int(max_länge + 5 - len(a))
anzahl = int(terminal_länge - max_länge - len(a) - len(i) + 5)
print(a, " " * anzahl, i)
print(soup.find("div", "page-body").p.next)
print("\n")
forumstatus(session)
def forumstatus(session):
html = session.get("https://www.python-forum.de/index.php").text
soup = BeautifulSoup(html, "html.parser")
abtrennung("Ungelesene Beiträge")
for tag in soup.find_all("dl", "row-item forum_unread"):
print(tag.div.a.next)
status_parser()
online_benutzer_parser()
Code: Alles auswählen
Forumstatistik
Themen insgesamt: 42187
Beiträge insgesamt: 346935
Mitglieder insgesamt: 17929
neuestes Mitglied: mxvmp
Benutzer die online sind
Fire Spike Betrachtet „Wer ist online?“
Google [Bot] Liest Thema in Qt/KDE
Bing [Bot] Liest Thema in Tkinter
Sirius3 Foren-Übersicht
Taioft Foren-Übersicht
Baidu [Spider] Foren-Übersicht
Es ist 1 Gast online
Ungelesene Beiträge
Allgemeine Fragen