Anpassungen
Das Layout wurde angepasst. Beschreibungen für die Webseiten wurden hinzugefügt.
This commit is contained in:
parent
bd51ecc0bb
commit
f742e406cd
184
einkauf_suche.py
184
einkauf_suche.py
@ -1,4 +1,4 @@
|
||||
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout,QLabel, QLineEdit, QPushButton, QCheckBox, QMessageBox
|
||||
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout,QLabel, QLineEdit, QPushButton, QCheckBox, QMessageBox, QGridLayout
|
||||
from concurrent.futures import ThreadPoolExecutor
|
||||
from PyQt5.QtCore import Qt, QThread, pyqtSignal
|
||||
from selenium import webdriver
|
||||
@ -41,51 +41,51 @@ class SearchThread(QThread):
|
||||
|
||||
self.driver.switch_to.window(self.driver.window_handles[-1])
|
||||
|
||||
if webseite == "Reichelt":
|
||||
if webseite == "Reichelt: Technikbedarf":
|
||||
self.suche_auf_reichelt()
|
||||
elif webseite == "Conrad":
|
||||
elif webseite == "Conrad: Technik Marktplatz":
|
||||
self.suche_auf_conrad()
|
||||
elif webseite == "Kosatec":
|
||||
elif webseite == "Kosatec: Elektro Artikel":
|
||||
self.suche_auf_kosatec()
|
||||
elif webseite == "Hornbach":
|
||||
elif webseite == "Hornbach: Bad, Baustoffe, Holz, Fenster & Türen, Bodenbeläge, Werkzeug, Farben & Tapeten, Garten, Heizen":
|
||||
self.suche_auf_hornbach()
|
||||
elif webseite =="Contorion":
|
||||
elif webseite =="Contorion: Befestigungstechnik, Handwerkzeug, Elektrowerkzeug, Materialbearbeitung, Betriebsausstattung":
|
||||
self.suche_auf_contorion()
|
||||
elif webseite == "Gastroteile Shop":
|
||||
elif webseite == "Gastroteile Shop: Geräte/Anwendung, Dichtungs- Elektro- Gas- Wasser-Komponenten, Werkzeuge":
|
||||
self.suche_auf_gastroteileshop()
|
||||
elif webseite == "TiroLED":
|
||||
elif webseite == "TiroLED: LED Beleuchtung, Digital Signage":
|
||||
self.suche_auf_tiroled()
|
||||
elif webseite == "Megabad":
|
||||
elif webseite == "Megabad: Badarmaturen, Badkeramik, Badmöbel, Badewannen, Duschwannen, Duschkabine, Badheizkörper":
|
||||
self.suche_auf_megabad()
|
||||
elif webseite == "IPS":
|
||||
elif webseite == "IPS: Verbindungs- Befestigungs- Dichtungs- Schlauch-Technik, Gewindefittings, Klemmringverschraubungen, Rohre":
|
||||
self.suche_auf_ips_shop()
|
||||
elif webseite == "Brewes":
|
||||
elif webseite == "Brewes: Sicherheitsschilder, Verkehrszeichen, Absperrketten, Prüfplaketten, Lagerkennzeichnung":
|
||||
self.suche_auf_brewes()
|
||||
elif webseite == "Delker":
|
||||
elif webseite == "Delker: Baugeräte,Beschlagsysteme und Sicherheitstechnik,Elektro- & Druckluftwerkzeuge,Betriebseinrichtungen":
|
||||
self.suche_auf_delker()
|
||||
elif webseite == "Knauss":
|
||||
elif webseite == "Knauss: Armaturen, Geschirrbrausen, Reinigung, Haushalt, Wellness, Garten":
|
||||
self.suche_auf_knauss()
|
||||
elif webseite == "Schildershop24":
|
||||
elif webseite == "Schildershop24: Beschilderung, Hauseingang, Firma & Gewerbe, KFZ & Straße":
|
||||
self.suche_auf_schildershop24()
|
||||
elif webseite == "Häfele":
|
||||
elif webseite == "Häfele: Griffe & Türdrücker, Möbelbeschläge & Wohnraumlösungen, Türbeschläge, Schiebebeschläge & Rollläden":
|
||||
self.suche_auf_haefele()
|
||||
elif webseite == "Esmeyer":
|
||||
elif webseite == "Esmeyer: Besteck & Geschirr, alles für Getränke, gedeckter Tisch, Essen & Trinken":
|
||||
self.suche_auf_esmeyer()
|
||||
elif webseite == "Papstar":
|
||||
elif webseite == "Papstar: Bio-Einweggeschirr, Teller & Schalen, Becher & Gläser, Besteck, Fingerfood-Artikel, Servietten":
|
||||
self.suche_auf_papstar()
|
||||
elif webseite == "Lusini":
|
||||
elif webseite == "Lusini: Gastrobedarf":
|
||||
self.suche_auf_lusini()
|
||||
elif webseite == "Hygi":
|
||||
elif webseite == "Hygi: Reinigungsmittel, Pflegemittel & Waschmittel, Desinfektionsmittel, Besen,Müllsäcke & Haushaltswaren":
|
||||
self.suche_auf_hygi()
|
||||
elif webseite == "Schafferer":
|
||||
elif webseite == "Schafferer: MARKEN, ESSEN & TRINKEN, WOHNEN & SCHENKEN, KOCHEN & GENIESSE, LUNCH, KINDER, THEMEN":
|
||||
self.suche_auf_schafferer()
|
||||
elif webseite == "Gastronomie Kaufhaus":
|
||||
elif webseite == "Gastronomie Kaufhaus: Gastrobedarf":
|
||||
self.suche_auf_gastronomie_kaufhaus()
|
||||
elif webseite == "Böttcher":
|
||||
elif webseite == "Böttcher: Bürobedarf, Papiere, Folien, Etiketten, Druckerpatronen, Büromöbel & Stahlschränke":
|
||||
self.suche_auf_boettcher()
|
||||
elif webseite == "Büroshop24":
|
||||
elif webseite == "Büroshop24: Papier, Tinte & Toner, Ordner & Mappen, Schreibwaren, Versand, Schulbedarf, Bürobedarf":
|
||||
self.suche_auf_bueroshop24()
|
||||
elif webseite == "Buchhandlung am Markt":
|
||||
elif webseite == "Buchhandlung am Markt: Bücher":
|
||||
self.suche_buchhandlung_am_markt()
|
||||
elif webseite == "Transpak":
|
||||
self.suche_auf_transpak()
|
||||
@ -113,18 +113,12 @@ class SearchThread(QThread):
|
||||
|
||||
|
||||
# URL für die Suche generieren
|
||||
search_url = 'https://www.brewes.de/catalogsearch/result?q='
|
||||
search_url = f'https://www.brewes.de/catalogsearch/result?q={self.search_term}'
|
||||
|
||||
# Webseite aufrufen und auf das vollständige Laden warten
|
||||
self.driver.get(search_url)
|
||||
WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.ID, "search")))
|
||||
|
||||
# Suchbegriff eingeben und Suche starten
|
||||
search_box = self.driver.find_element(By.ID, "search")
|
||||
search_box.clear() # Falls vorheriger Text vorhanden ist
|
||||
search_box.send_keys(self.search_term)
|
||||
search_box.send_keys(Keys.RETURN)
|
||||
|
||||
def suche_auf_conrad(self):
|
||||
# WebDriver initialisieren
|
||||
|
||||
@ -426,8 +420,6 @@ class SearchThread(QThread):
|
||||
self.driver.get(search_url)
|
||||
WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.ID, "autocomplete-0-input")))
|
||||
|
||||
|
||||
|
||||
def suche_auf_bueroshop24(self):
|
||||
|
||||
# URL für die Suche generieren
|
||||
@ -480,11 +472,27 @@ class SearchThread(QThread):
|
||||
|
||||
categories = ["IT/EDV", "Haustechnik","Küche", "Verwaltung", "Transporte"]
|
||||
webpages = [
|
||||
["Reichelt: Technikbedarf", "Conrad: Technik Marktplatz", "Kosatec: Elektro Artikel"],
|
||||
["Hornbach: Bad & Sanitär, Baustoffe, Holz, Fenster & Türen, Bodenbeläge & Fliesen, Eisenwaren, Farben & Tapeten, Garten, Heizen, Klima & Lüftung, Innendeko & Bildershop, Küche, Leuchten & Elektro",
|
||||
"Contorion", "Gastroteile Shop", "TiroLED", "Megabad", "IPS", "Brewes", "Delker", "Knauss", "Schildershop24", "Häfele"],
|
||||
["Esmeyer", "Papstar", "Lusini", "Hygi", "Schafferer", "Gastronomie Kaufhaus"],
|
||||
["Böttcher", "Büroshop24", "Buchhandlung am Markt"],
|
||||
["Reichelt: Technikbedarf", "Kosatec: Elektro Artikel", "Conrad: Technik Marktplatz"],
|
||||
["Hornbach: Bad, Baustoffe, Holz, Fenster & Türen, Bodenbeläge, Werkzeug, Farben & Tapeten, Garten, Heizen",
|
||||
"Contorion: Befestigungstechnik, Handwerkzeug, Elektrowerkzeug, Materialbearbeitung, Betriebsausstattung",
|
||||
"Gastroteile Shop: Geräte/Anwendung, Dichtungs- Elektro- Gas- Wasser-Komponenten, Werkzeuge",
|
||||
"TiroLED: LED Beleuchtung, Digital Signage",
|
||||
"Megabad: Badarmaturen, Badkeramik, Badmöbel, Badewannen, Duschwannen, Duschkabine, Badheizkörper",
|
||||
"IPS: Verbindungs- Befestigungs- Dichtungs- Schlauch-Technik, Gewindefittings, Klemmringverschraubungen, Rohre",
|
||||
"Brewes: Sicherheitsschilder, Verkehrszeichen, Absperrketten, Prüfplaketten, Lagerkennzeichnung",
|
||||
"Delker: Baugeräte,Beschlagsysteme und Sicherheitstechnik,Elektro- & Druckluftwerkzeuge,Betriebseinrichtungen",
|
||||
"Knauss: Armaturen, Geschirrbrausen, Reinigung, Haushalt, Wellness, Garten",
|
||||
"Schildershop24: Beschilderung, Hauseingang, Firma & Gewerbe, KFZ & Straße",
|
||||
"Häfele: Griffe & Türdrücker, Möbelbeschläge & Wohnraumlösungen, Türbeschläge, Schiebebeschläge & Rollläden"],
|
||||
["Esmeyer: Besteck & Geschirr, alles für Getränke, gedeckter Tisch, Essen & Trinken",
|
||||
"Papstar: Bio-Einweggeschirr, Teller & Schalen, Becher & Gläser, Besteck, Fingerfood-Artikel, Servietten",
|
||||
"Lusini: Gastrobedarf",
|
||||
"Hygi: Reinigungsmittel, Pflegemittel & Waschmittel, Desinfektionsmittel, Besen,Müllsäcke & Haushaltswaren ",
|
||||
"Schafferer: MARKEN, ESSEN & TRINKEN, WOHNEN & SCHENKEN, KOCHEN & GENIESSE, LUNCH, KINDER, THEMEN",
|
||||
"Gastronomie Kaufhaus: Gastrobedarf"],
|
||||
["Böttcher: Bürobedarf, Papiere, Folien, Etiketten, Druckerpatronen, Büromöbel & Stahlschränke",
|
||||
"Buchhandlung am Markt: Bücher",
|
||||
"Büroshop24: Papier, Tinte & Toner, Ordner & Mappen, Schreibwaren, Versand, Schulbedarf, Bürobedarf"],
|
||||
["Transpak"]
|
||||
]
|
||||
|
||||
@ -504,25 +512,95 @@ class WebseitenSucheApp(QWidget):
|
||||
def init_ui(self):
|
||||
layout = QVBoxLayout()
|
||||
|
||||
# Kategorien und Webseiten in vertikalen Spalten
|
||||
for category, category_webpages in zip(categories, webpages):
|
||||
category_label = QLabel(category)
|
||||
layout.addWidget(category_label)
|
||||
# Kategorien und Webseiten in zwei vertikalen Spalten
|
||||
grid_layout = QGridLayout()
|
||||
|
||||
for webpage in category_webpages:
|
||||
checkbox = QCheckBox(webpage)
|
||||
checkbox.setChecked(self.selected_webpages[webpage])
|
||||
checkbox.stateChanged.connect(self.make_checkbox_callback(webpage))
|
||||
# Add category in the first column#############################################################
|
||||
category = "Haustechnik"
|
||||
category_label = QLabel(category)
|
||||
grid_layout.addWidget(category_label, 0, 0, 1, 2)
|
||||
|
||||
green_webpages = ["Reichelt","Kosatec","Hornbach","Contorion","Gastroteile Shop","TiroLED","Megabad","Esmeyer","Papstar","Lusini","Hygi","Schafferer","Gastronomie Kaufhaus","Böttcher","Büroshop24","Buchhandlung am Markt","Transpak"]
|
||||
if any(green_webpage in webpage for green_webpage in green_webpages):
|
||||
checkbox.setStyleSheet("color: green;")
|
||||
# Add corresponding webpages in the first column
|
||||
for row, webpage in enumerate(self.category_webpages_mapping[category]):
|
||||
checkbox = QCheckBox(webpage)
|
||||
checkbox.setChecked(self.selected_webpages[webpage])
|
||||
checkbox.stateChanged.connect(self.make_checkbox_callback(webpage))
|
||||
|
||||
yellow_webpages = ["Conrad","IPS","Brewes","Delker","Knauss","Schildershop24","Häfele",]
|
||||
if any(yellow_webpage in webpage for yellow_webpage in yellow_webpages):
|
||||
checkbox.setStyleSheet("color: yellow;")
|
||||
green_webpages = ["Hornbach", "Contorion", "Gastroteile Shop", "TiroLED", "Megabad" ]
|
||||
if any(green_webpage in webpage for green_webpage in green_webpages):
|
||||
checkbox.setStyleSheet("color: green;")
|
||||
|
||||
yellow_webpages = ["IPS", "Brewes","Delker", "Knauss", "Schildershop24", "Häfele"]
|
||||
if any(yellow_webpage in webpage for yellow_webpage in yellow_webpages):
|
||||
checkbox.setStyleSheet("color: yellow;")
|
||||
|
||||
grid_layout.addWidget(checkbox, row + 1, 0, 1, 2)
|
||||
|
||||
category = "Küche"
|
||||
category_label = QLabel(category)
|
||||
grid_layout.addWidget(category_label, 12, 0, 1, 2)
|
||||
|
||||
for row, webpage in enumerate(self.category_webpages_mapping[category]):
|
||||
checkbox = QCheckBox(webpage)
|
||||
checkbox.setChecked(self.selected_webpages[webpage])
|
||||
checkbox.stateChanged.connect(self.make_checkbox_callback(webpage))
|
||||
|
||||
green_webpages = ["Esmeyer", "Papstar", "Lusini", "Hygi", "Schafferer", "Gastronomie Kaufhaus"]
|
||||
if any(green_webpage in webpage for green_webpage in green_webpages):
|
||||
checkbox.setStyleSheet("color: green;")
|
||||
|
||||
yellow_webpages = []
|
||||
if any(yellow_webpage in webpage for yellow_webpage in yellow_webpages):
|
||||
checkbox.setStyleSheet("color: yellow;")
|
||||
|
||||
grid_layout.addWidget(checkbox, row + 13, 0, 1, 2)
|
||||
|
||||
# Add "IT/EDV" category in the second column#############################################################
|
||||
category = "IT/EDV"
|
||||
category_label = QLabel(category)
|
||||
grid_layout.addWidget(category_label, 0, 2, 1, 2)
|
||||
|
||||
# Add corresponding webpages in the second column
|
||||
for row, webpage in enumerate(self.category_webpages_mapping[category]):
|
||||
checkbox = QCheckBox(webpage)
|
||||
checkbox.setChecked(self.selected_webpages[webpage])
|
||||
checkbox.stateChanged.connect(self.make_checkbox_callback(webpage))
|
||||
|
||||
green_webpages = ["Reichelt", "Kosatec" ]
|
||||
if any(green_webpage in webpage for green_webpage in green_webpages):
|
||||
checkbox.setStyleSheet("color: green;")
|
||||
|
||||
yellow_webpages = ["Conrad"]
|
||||
if any(yellow_webpage in webpage for yellow_webpage in yellow_webpages):
|
||||
checkbox.setStyleSheet("color: yellow;")
|
||||
|
||||
grid_layout.addWidget(checkbox, row+ 1, 2, 1, 2)
|
||||
|
||||
|
||||
category = "Verwaltung"
|
||||
category_label = QLabel(category)
|
||||
grid_layout.addWidget(category_label, 4, 2, 1, 2)
|
||||
|
||||
# Add corresponding webpages in the second column
|
||||
for row, webpage in enumerate(self.category_webpages_mapping[category]):
|
||||
checkbox = QCheckBox(webpage)
|
||||
checkbox.setChecked(self.selected_webpages[webpage])
|
||||
checkbox.stateChanged.connect(self.make_checkbox_callback(webpage))
|
||||
|
||||
green_webpages = []
|
||||
if any(green_webpage in webpage for green_webpage in green_webpages):
|
||||
checkbox.setStyleSheet("color: green;")
|
||||
|
||||
yellow_webpages = []
|
||||
if any(yellow_webpage in webpage for yellow_webpage in yellow_webpages):
|
||||
checkbox.setStyleSheet("color: yellow;")
|
||||
|
||||
grid_layout.addWidget(checkbox, row+ 5, 2, 1, 2)
|
||||
|
||||
##########################################################################################################################
|
||||
|
||||
layout.addLayout(grid_layout)
|
||||
|
||||
layout.addWidget(checkbox)
|
||||
# Suchbegriff-Eingabe
|
||||
search_label = QLabel("Geben Sie den Suchbegriff ein:")
|
||||
layout.addWidget(search_label)
|
||||
|
Loading…
x
Reference in New Issue
Block a user