Code Optimiert

This commit is contained in:
Domenik Rath 2023-12-29 17:19:53 +01:00
parent 8bff182bfc
commit b9f28f7f75

View File

@ -8,11 +8,7 @@ from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup
import sqlite3
import sys
import concurrent.futures
BLANK_PAGE_URL = ""
@ -36,115 +32,73 @@ class SearchThread(QThread):
finally:
self.search_finished.emit()
def search_for_website(self,webseite):
search_functions = {
"Reichelt": self.suche_auf_reichelt,
"Conrad": self.suche_auf_conrad,
"Kosatec": self.suche_auf_kosatec,
"Hornbach": self.suche_auf_hornbach,
"Contorion": self.suche_auf_contorion,
"Gastroteile Shop": self.suche_auf_gastroteileshop,
"TiroLED": self.suche_auf_tiroled,
"Megabad": self.suche_auf_megabad,
"Baubeschlagshop": self.suche_auf_baubeschlag,
"IPS": self.suche_auf_ips_shop,
"Brewes": self.suche_auf_brewes,
"Delker": self.suche_auf_delker,
"Knauss": self.suche_auf_knauss,
"schildershop24": self.suche_auf_schildershop24,
"Häfele": self.suche_auf_haefele,
"Esmeyer": self.suche_auf_esmeyer,
"Papstar": self.suche_auf_papstar,
"Pacovis": self.suche_auf_pacovis,
"Lusini": self.suche_auf_lusini,
"Hygi": self.suche_auf_hygi,
"Tischwelt": self.suche_auf_tischwelt,
"Schafferer": self.suche_auf_schafferer,
"Gastronomie Kaufhaus": self.suche_auf_gastronomie_kaufhaus,
"Arbeitsplatzmatten Profi": self.suche_auf_arbeitsplatzmattenprofi,
"Skiltex": self.suche_auf_skiltex,
"Franz-Mensch": self.suche_auf_franzmensch,
"Frank-Flechtwaren": self.suche_auf_frankflechtwaren,
"ARA": self.suche_auf_ara_arbeitsschutz,
"VKF-Renzel": self.suche_auf_vkf_renzel,
"Börner": self.suche_auf_boerner,
"GGM-Gastro": self.suche_auf_ggmgastro,
"Böttcher": self.suche_auf_boettcher,
"Büroshop24": self.suche_auf_bueroshop24,
"Buchhandlung am Markt": self.suche_buchhandlung_am_markt,
"Label-Ident": self.suche_auf_labelident,
"Transpak": self.suche_auf_transpak,
"PML": self.suche_auf_pml,
"DM-Folien": self.suche_auf_dmfolien,
"Proficleanshop": self.suche_auf_proficleanshop,
"Siepmann": self.suche_auf_siepmann,
"FK-Söhnchen": self.suche_auf_fksoehnchen,
"Wahl-Agar": self.suche_auf_wahl_agrar,
"TVV-Verpackungen": self.suche_auf_tvv,
"Eierschachteln.de": self.suche_auf_eierschachteln,
"KOX": self.suche_auf_kox,
"Reinigungsberater.de": self.suche_auf_reinigungsberater,
"VBS-Hobby": self.suche_auf_vbshobby,
"Ökonomed": self.suche_auf_oekonomed,
"Rossmann": self.suche_auf_rossmann,
"Betzold": self.suche_auf_betzold,
}
search_function = search_functions.get(webseite)
if search_function:
search_function()
else:
print(f"Keine Suchfunktion für die Webseite '{webseite}' gefunden.")
def start_search_on_webseite(self, webseite):
try:
self.driver.execute_script(f"window.open('{BLANK_PAGE_URL}', '_blank');")
self.driver.switch_to.window(self.driver.window_handles[-1])
if webseite == "Reichelt":
self.suche_auf_reichelt()
elif webseite == "Conrad":
self.suche_auf_conrad()
elif webseite == "Kosatec":
self.suche_auf_kosatec()
elif webseite == "Hornbach":
self.suche_auf_hornbach()
elif webseite =="Contorion":
self.suche_auf_contorion()
elif webseite == "Gastroteile Shop":
self.suche_auf_gastroteileshop()
elif webseite == "TiroLED":
self.suche_auf_tiroled()
elif webseite == "Megabad":
self.suche_auf_megabad()
elif webseite == "Baubeschlagshop":
self.suche_auf_baubeschlag()
elif webseite == "IPS":
self.suche_auf_ips_shop()
elif webseite == "Brewes":
self.suche_auf_brewes()
elif webseite == "Delker":
self.suche_auf_delker()
elif webseite == "Knauss":
self.suche_auf_knauss()
elif webseite == "Schildershop24":
self.suche_auf_schildershop24()
elif webseite == "Häfele":
self.suche_auf_haefele()
elif webseite == "Esmeyer":
self.suche_auf_esmeyer()
elif webseite == "Papstar":
self.suche_auf_papstar()
elif webseite == "Pacovis":
self.suche_auf_pacovis()
elif webseite == "Lusini":
self.suche_auf_lusini()
elif webseite == "Hygi":
self.suche_auf_hygi()
elif webseite == "Tischwelt":
self.suche_auf_tischwelt()
elif webseite == "Schafferer":
self.suche_auf_schafferer()
elif webseite == "Gastronomie Kaufhaus":
self.suche_auf_gastronomie_kaufhaus()
elif webseite == "Arbeitsplatzmatten Profi":
self.suche_auf_arbeitsplatzmattenprofi()
elif webseite == "Skiltex":
self.suche_auf_skiltex()
elif webseite == "Franz-Mensch":
self.suche_auf_franzmensch()
elif webseite == "Frank-Flechtwaren":
self.suche_auf_frankflechtwaren()
elif webseite == "ARA":
self.suche_auf_ara_arbeitsschutz()
elif webseite == "VKF-Renzel":
self.suche_auf_vkf_renzel()
elif webseite == "Börner":
self.suche_auf_boerner()
elif webseite == "GGM-Gastro":
self.suche_auf_ggmgastro()
elif webseite == "Böttcher":
self.suche_auf_boettcher()
elif webseite == "Büroshop24":
self.suche_auf_bueroshop24()
elif webseite == "Buchhandlung am Markt":
self.suche_buchhandlung_am_markt()
elif webseite == "Label-Ident":
self.suche_auf_labelident()
elif webseite == "Transpak":
self.suche_auf_transpak()
elif webseite == "PM":
self.suche_auf_pml()
elif webseite == "DM-Folien":
self.suche_auf_dmfolien()
elif webseite == "Proficleanshop":
self.suche_auf_proficleanshop()
elif webseite == "Siepmann":
self.suche_auf_siepmann()
elif webseite == "FK-Söhnchen":
self.suche_auf_fksoehnchen()
elif webseite == "Wahl-Agar":
self.suche_auf_wahl_agrar()
elif webseite == "TVV-Verpackungen":
self.suche_auf_tvv()
elif webseite == "Eierschachteln.de":
self.suche_auf_eierschachteln()
elif webseite == "KOX":
self.suche_auf_kox()
elif webseite == "Reinigungsberater.de":
self.suche_auf_reinigungsberater()
elif webseite == "VBS-Hobby":
self.suche_auf_vbshobby()
elif webseite == "Ökonomed":
self.suche_auf_oekonomed()
elif webseite == "Rossmann":
self.suche_auf_rossmann()
elif webseite == "Betzold":
self.suche_auf_betzold()
self.search_for_website(webseite)
except Exception as e:
print(f"Fehler bei der Suche auf {webseite}: {e}")
@ -606,7 +560,6 @@ class SearchThread(QThread):
# Webseite aufrufen und auf das vollständige Laden warten
self.driver.get(search_url)
def suche_auf_wahl_agrar(self):
# URL für die Suche generieren
search_url = 'https://www.agrar-fachversand.com/de/' # Ersetzen Sie dies durch die tatsächliche URL für Wahl Agrar
@ -694,18 +647,14 @@ class SearchThread(QThread):
self.driver.get(search_url)
class WebseitenSucheApp(QWidget):
def __init__(self):
super().__init__()
self.categories, self.webpages = self.get_categories_and_webpages()
self.checkbox_states = {webpage: False for category_webpages in self.webpages for webpage in category_webpages}
self.search_term = ""
self.driver = None
self.init_ui()
def get_categories_and_webpages(self):
@ -726,9 +675,6 @@ class WebseitenSucheApp(QWidget):
return categories, webpages
# ...
def init_ui(self):
self.setStyleSheet("background-color: black; color: white;")
layout = QVBoxLayout()
@ -880,12 +826,6 @@ class WebseitenSucheApp(QWidget):
# Setze den Stretch-Faktor für die zusätzliche Zeile zwischen den Kategorien
grid_layout.setRowStretch(row_position + num_rows_for_category, 0)
##########################################################################################################################
layout.addLayout(grid_layout)
self.setLayout(layout)
@ -905,20 +845,17 @@ class WebseitenSucheApp(QWidget):
layout.addWidget(search_button)
search_button.setStyleSheet("color: white; border: 1px solid white;")
# Neues Suche-Button
new_search_button = QPushButton("Neue Suche starten", self)
new_search_button.clicked.connect(self.clear_checkboxes)
layout.addWidget(new_search_button)
new_search_button.setStyleSheet("color: white; border: 1px solid white;")
self.setLayout(layout)
self.setGeometry(300, 300, 400, 200)
self.setWindowTitle('Webseiten Suche App')
self.show()
def make_checkbox_callback(self, webpage):
def checkbox_callback(state):
self.checkbox_states[webpage] = state == Qt.Checked