From bd51ecc0bb234a815225814816ca404c7f5ebc7b Mon Sep 17 00:00:00 2001 From: RochoElLocho Date: Tue, 28 Nov 2023 16:27:57 +0100 Subject: [PATCH] =?UTF-8?q?Die=20Webseiten=20wurden=20farblich=20markiert?= =?UTF-8?q?=20um=20zu=20sehen=20auf=20welchen=20Webseiten=20man=20auf=20je?= =?UTF-8?q?denfall=20bestellen=20kann=20und=20welche=20nicht.=20Au=C3=9Fer?= =?UTF-8?q?dem=20wurde=20der=20Driver=20von=20Edge=20auf=20Chrome=20gewech?= =?UTF-8?q?selt.=20Zudem=20wurde=20die=20suche=20auf=20B=C3=B6ttcher=20ang?= =?UTF-8?q?epasst.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- einkauf_suche.py | 53 ++++++++++++++++++++++++++++++++++++------------ 1 file changed, 40 insertions(+), 13 deletions(-) diff --git a/einkauf_suche.py b/einkauf_suche.py index 53967e9..b6f3141 100644 --- a/einkauf_suche.py +++ b/einkauf_suche.py @@ -7,6 +7,8 @@ from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from bs4 import BeautifulSoup + + import sys import concurrent.futures @@ -20,10 +22,11 @@ class SearchThread(QThread): self.selected_webpages = selected_webpages self.search_term = search_term self.error_message = None - self.driver = webdriver.Edge() + self.driver = webdriver.Chrome() def run(self): try: + for webseite in self.selected_webpages: self.start_search_on_webseite(webseite) except Exception as e: @@ -84,6 +87,8 @@ class SearchThread(QThread): self.suche_auf_bueroshop24() elif webseite == "Buchhandlung am Markt": self.suche_buchhandlung_am_markt() + elif webseite == "Transpak": + self.suche_auf_transpak() except Exception as e: print(f"Fehler bei der Suche auf {webseite}: {e}") @@ -415,19 +420,13 @@ class SearchThread(QThread): def suche_auf_boettcher(self): # URL für die Suche generieren - search_url = 'https://www.bueromarkt-ag.de/' # Bitte die tatsächliche URL einsetzen + search_url = f'https://www.bueromarkt-ag.de/Artikelsuche_{self.search_term}.html' # Bitte die tatsächliche URL einsetzen # 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, "autocomplete-0-input"))) - # Suchbegriff eingeben und Suche starten - search_box = self.driver.find_element(By.ID, "autocomplete-0-input") - search_box.clear() # Falls vorheriger Text vorhanden ist - search_box.send_keys(self.search_term) - - # Enter-Taste drücken, um die Suche zu starten (falls notwendig) - search_box.send_keys(Keys.RETURN) + def suche_auf_bueroshop24(self): @@ -462,12 +461,31 @@ class SearchThread(QThread): # Enter-Taste drücken, um die Suche zu starten search_box.send_keys(Keys.RETURN) -categories = ["IT/EDV", "Haustechnik","Küche", "Verwaltung"] + def suche_auf_transpak(self): + # URL für die Suche generieren + search_url = f'https://www.shop.transpak.de/search?sSearch={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.CLASS_NAME, "form-control"))) + try: + # Warten, bis der Ablehnen-Button sichtbar ist + cookie_button = WebDriverWait(self.driver, 10).until( + EC.presence_of_element_located((By.XPATH, "//button[@data-cookiefirst-action='reject']")) + ) + # Klicken Sie auf den Ablehnen-Button, um Cookies abzulehnen + cookie_button.click() + except Exception as e: + print(f"Fehler beim Akzeptieren von Cookies: {e}") + +categories = ["IT/EDV", "Haustechnik","Küche", "Verwaltung", "Transporte"] webpages = [ - ["Reichelt", "Conrad", "Kosatec"], - ["Hornbach", "Contorion", "Gastroteile Shop", "TiroLED", "Megabad", "IPS", "Brewes", "Delker", "Knauss", "Schildershop24", "Häfele"], + ["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"] + ["Böttcher", "Büroshop24", "Buchhandlung am Markt"], + ["Transpak"] ] class WebseitenSucheApp(QWidget): @@ -495,6 +513,15 @@ class WebseitenSucheApp(QWidget): checkbox = QCheckBox(webpage) checkbox.setChecked(self.selected_webpages[webpage]) checkbox.stateChanged.connect(self.make_checkbox_callback(webpage)) + + 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;") + + 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;") + layout.addWidget(checkbox) # Suchbegriff-Eingabe search_label = QLabel("Geben Sie den Suchbegriff ein:")