diff --git a/.DS_Store b/.DS_Store index 16c56c6..5ecf356 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/database.py b/database.py index 1d1c044..43dc9fc 100644 --- a/database.py +++ b/database.py @@ -34,7 +34,7 @@ for category in categories: # Webseiten hinzufügen webpages = [ ["Reichelt", "Kosatec", "Conrad"], - ["Hornbach", "Contorion","Gastroteile Shop", "TiroLED", "Megabad", "Baubeschlagshop", "IPS", "Häfele", "Delker", "Knauss"], + ["Hornbach", "Esska","Contorion","Gastroteile Shop", "TiroLED", "Megabad", "Baubeschlagshop", "IPS", "Häfele", "Delker", "Knauss"], ["Brewes", "Schildershop24", "Skiltex", "VKF-Renzel"], ["Papstar", "Pacovis", "Transpak", "TVV-Verpackungen", "Eierschachteln.de", "DM-Folien"], ["Esmeyer", "Lusini", "Tischwelt", "Schafferer", "Gastronomie Kaufhaus", "Börner", "GGM-Gastro"], diff --git a/einkauf_suche.py b/einkauf_suche.py index 1fd367a..9f10597 100644 --- a/einkauf_suche.py +++ b/einkauf_suche.py @@ -38,6 +38,7 @@ class SearchThread(QThread): "Conrad": self.suche_auf_conrad, "Kosatec": self.suche_auf_kosatec, "Hornbach": self.suche_auf_hornbach, + "Esska": self.suche_auf_esska, "Contorion": self.suche_auf_contorion, "Gastroteile Shop": self.suche_auf_gastroteileshop, "TiroLED": self.suche_auf_tiroled, @@ -103,8 +104,6 @@ class SearchThread(QThread): print(f"Fehler bei der Suche auf {webseite}: {e}") def suche_auf_haefele(self): - - # URL für die Suche generieren search_url = 'https://www.haefele.de/' @@ -119,31 +118,20 @@ class SearchThread(QThread): search_box.send_keys(Keys.RETURN) def suche_auf_brewes(self): - # URL für die Suche generieren search_url = f'https://www.brewes.de/catalogsearch/result?q={self.search_term}' - - # Webseite aufrufen self.driver.get(search_url) def suche_auf_conrad(self): - - # Such-URL generieren search_url = f'https://www.conrad.de/search.html?search={self.search_term}' - - # Webseite aufrufen self.driver.get(search_url) # Suchbegriff eingeben search_box = self.driver.find_element(By.ID, "header-search") search_box.clear() # Falls vorheriger Text vorhanden ist search_box.send_keys(self.search_term) - - # Enter-Taste drücken search_box.send_keys(Keys.RETURN) def suche_auf_contorion(self): - - # Such-URL generieren search_url = f'https://www.contorion.de/suche?q={self.search_term}' # Webseite aufrufen und auf das vollständige Laden warten @@ -154,15 +142,10 @@ class SearchThread(QThread): search_box = self.driver.find_element(By.ID, "search-input") search_box.clear() # Falls vorheriger Text vorhanden ist search_box.send_keys(self.search_term) - - # Enter-Taste drücken search_box.send_keys(Keys.RETURN) def suche_auf_reichelt(self): - # Such-URL generieren search_url = f'https://www.reichelt.de/index.html?ACTION=446&LA=446&nbc=1&SEARCH={self.search_term}' - - # Webseite aufrufen und auf das vollständige Laden warten self.driver.get(search_url) WebDriverWait(self.driver, 60).until(EC.presence_of_element_located((By.ID, "searchbutton"))) @@ -176,33 +159,23 @@ class SearchThread(QThread): search_button.click() def suche_auf_kosatec(self): - - # Such-URL generieren search_url = f'https://shop.kosatec.de/search?search={self.search_term}' - - # Webseite aufrufen self.driver.get(search_url) cookie_button = self.driver.find_element(By.ID, "CybotCookiebotDialogBodyLevelButtonLevelOptinAllowAll") cookie_button.click() def suche_auf_hornbach(self): - - # URL für die Suche generieren search_url = f'https://www.hornbach.de/s/{self.search_term}' - - # Webseite aufrufen - self.driver.get(search_url) - - def suche_auf_gastroteileshop(self): - - # URL für die Suche generieren - search_url = f'https://www.gastroteileshop.de/?s={self.search_term}' - - # Webseite aufrufen und auf das vollständige Laden warten self.driver.get(search_url) - # Warten, bis das Suchfeld sichtbar ist + def suche_auf_esska(self): + search_url = f'https://www.esska.de/shop/search/{self.search_term}' + self.driver.get(search_url) + + def suche_auf_gastroteileshop(self): + search_url = f'https://www.gastroteileshop.de/?s={self.search_term}' + self.driver.get(search_url) WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "search-input"))) cookie_button = self.driver.find_element(By.CLASS_NAME, "btn.btn-primary.btn-block.btn-appearance") @@ -215,86 +188,57 @@ class SearchThread(QThread): search_box.send_keys(Keys.RETURN) def suche_auf_tiroled(self): - # URL für die Suche generieren search_url = f'https://www.tiroled.com/de/search?search={self.search_term}' - - # Webseite aufrufen self.driver.get(search_url) cookie_button = self.driver.find_element(By.CLASS_NAME, "cookie-consent-accept-only-functional-button.btn.btn-primary.cookie-consent-button-margin") cookie_button.click() def suche_auf_megabad(self): - # URL für die Suche generieren search_url = f'https://www.megabad.com/search/?query=sdyc/#/q/{self.search_term}' - - # Webseite aufrufen und auf das vollständige Laden warten self.driver.get(search_url) cookie_button = self.driver.find_element(By.CSS_SELECTOR, ".cmpboxbtn.cmpboxbtnyes.cmptxt_btn_yes") cookie_button.click() def suche_auf_baubeschlag(self): - # URL für die Suche generieren search_url = f'https://www.baubeschlagshop.de/fts.php?criteria={self.search_term}' - - # Webseite aufrufen self.driver.get(search_url) def suche_auf_ips_shop(self): - - # URL für die Suche generieren search_url = f'https://www.ips-kts.com/de/suche?query={self.search_term}' - - # Webseite aufrufen self.driver.get(search_url) cookie_button = self.driver.find_element(By.CLASS_NAME, "btn.btn-primary.btn-red.user-type--business") cookie_button.click() def suche_auf_delker(self): - - # URL für die Suche generieren search_url = f'https://www.delker2business.com/nwsearch/execute?query={self.search_term}' - - # Webseite aufrufen self.driver.get(search_url) def suche_auf_knauss(self): - # URL für die Suche generieren search_url = f'https://knauss.info/dksearch?sSearch={self.search_term}' - - # Webseite aufrufen self.driver.get(search_url) cookie_button = self.driver.find_element(By.CLASS_NAME, "cookie-permission--decline-button.btn.is--large.is--center") cookie_button.click() def suche_auf_schildershop24(self): - # URL für die Suche generieren search_url = f'https://www.schildershop24.de/?action=Query&-query.&query.stichwort=r{self.search_term}' - - # Webseite aufrufen self.driver.get(search_url) cookie_button = self.driver.find_element(By.CLASS_NAME, "btn.btn-primary.button.set-disabled") cookie_button.click() def suche_auf_esmeyer(self): - # URL für die Suche generieren search_url = f'https://www.esmeyer-shop.de/search?search={self.search_term}' - - # Webseite aufrufen self.driver.get(search_url) cookie_button = self.driver.find_element(By.CLASS_NAME, "cookie-permission-button.js-cookie-permission-button") cookie_button.click() def suche_auf_papstar(self): - # URL für die Suche generieren search_url = 'https://www.papstar-shop.de/' - - # 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"))) @@ -302,30 +246,18 @@ class SearchThread(QThread): search_box = self.driver.find_element(By.ID, "search") search_box.clear() # Falls vorheriger Text vorhanden ist search_box.send_keys(self.search_term) - - # Enter-Taste drücken, um die Suche zu starten search_box.send_keys(Keys.RETURN) def suche_auf_pacovis(self): - # URL für die Suche generieren search_url = f'https://www.pacovis.com/de-de/suche/1/search={self.search_term}' - - # Webseite aufrufen self.driver.get(search_url) def suche_auf_lusini(self): - - # URL für die Suche generieren search_url = f'https://www.lusini.com/de-de/search/#q={self.search_term}' - - # Webseite aufrufen self.driver.get(search_url) def suche_auf_hygi(self): - # URL für die Suche generieren search_url = 'https://www.hygi.de/' - - # 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, "qbox"))) @@ -336,31 +268,18 @@ class SearchThread(QThread): search_box = self.driver.find_element(By.ID, "qbox") search_box.clear() # Falls vorheriger Text vorhanden ist search_box.send_keys(self.search_term) - - # Enter-Taste drücken, um die Suche zu starten search_box.send_keys(Keys.RETURN) def suche_auf_tischwelt(self): - # URL für die Suche generieren search_url = f'https://www.tischwelt.de/shop/Suche/?q={self.search_term}&search=Suchen' - - # Webseite aufrufen und auf das vollständige Laden warten self.driver.get(search_url) def suche_auf_schafferer(self): - - # URL für die Suche generieren search_url = f'https://www.schafferer.de/gastro/Artikel-Suche/?q={self.search_term}' - - # Webseite aufrufen und auf das vollständige Laden warten self.driver.get(search_url) def suche_auf_gastronomie_kaufhaus(self): - - # URL für die Suche generieren search_url = 'https://www.gastronomie-kaufhaus.de/' - - # 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, "searchParam"))) @@ -368,27 +287,17 @@ class SearchThread(QThread): search_box = self.driver.find_element(By.ID, "searchParam") 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_arbeitsplatzmattenprofi(self): - - - # URL für die Suche generieren search_url = f'https://arbeitsplatzmatten-profi.com/?s={self.search_term}' - - # Webseite aufrufen und auf das vollständige Laden warten self.driver.get(search_url) cookie_button = self.driver.find_element(By.ID, "CookieBoxSaveButton") cookie_button.click() def suche_auf_skiltex(self): - - search_url = 'https://www.skiltex.de/shop/frontpage.html' # Ersetzen Sie dies durch die tatsächliche URL für Skiltex - - # Webseite aufrufen und auf das vollständige Laden warten + search_url = 'https://www.skiltex.de/shop/frontpage.html' self.driver.get(search_url) WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "SearchField_SearchPage"))) @@ -398,8 +307,6 @@ class SearchThread(QThread): # Auf die Suchleiste klicken search_box = self.driver.find_element(By.CLASS_NAME, "SearchField_SearchPage") search_box.click() - - # Suchbegriff eingeben und Suche starten search_box.clear() search_box.send_keys(self.search_term) search_box.send_keys(Keys.RETURN) @@ -409,71 +316,45 @@ class SearchThread(QThread): kunde.click() def suche_auf_franzmensch(self): - # URL für die Suche generieren search_url = f'https://www.franz-mensch.de/search?search={self.search_term}' - - # Webseite aufrufen und auf das vollständige Laden warten self.driver.get(search_url) def suche_auf_frankflechtwaren(self): - # URL für die Suche generieren search_url = f'https://www.frank-flechtwaren.de/suchergebnisse/?query={self.search_term}' - - # Webseite aufrufen und auf das vollständige Laden warten self.driver.get(search_url) def suche_auf_ara_arbeitsschutz(self): - # URL für die Suche generieren search_url = f'https://ara-arbeitsschutz.de/navi.php?qs={self.search_term}' - - # Webseite aufrufen und auf das vollständige Laden warten self.driver.get(search_url) cookie_button = self.driver.find_element(By.CLASS_NAME, "cmpboxbtn.cmpboxbtnno.cmptxt_btn_no") cookie_button.click() def suche_auf_vkf_renzel(self): - # URL für die Suche generieren search_url = f'https://www.vkf-renzel.de/index.php?lang=0&cl=rasearch&searchparam={self.search_term}' - - # Webseite aufrufen und auf das vollständige Laden warten self.driver.get(search_url) def suche_auf_boerner(self): - # URL für die Suche generieren search_url = f'https://www.boerner.de/?s={self.search_term}' - - # Webseite aufrufen und auf das vollständige Laden warten self.driver.get(search_url) cookie_button = self.driver.find_element(By.ID, "CookieBoxSaveButton") cookie_button.click() def suche_auf_ggmgastro(self): - # URL für die Suche generieren search_url = f'https://www.ggmgastro.com/de-de-eur/search?q={self.search_term}' - - # Webseite aufrufen und auf das vollständige Laden warten self.driver.get(search_url) cookie_button = self.driver.find_element(By.CLASS_NAME, "cf1y60") cookie_button.click() def suche_auf_boettcher(self): - - # URL für die Suche generieren 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"))) def suche_auf_bueroshop24(self): - - # URL für die Suche generieren search_url = 'https://www.bueroshop24.de/' - - # 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, "searchTerm"))) @@ -481,34 +362,25 @@ class SearchThread(QThread): search_box = self.driver.find_element(By.ID, "searchTerm") 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_buchhandlung_am_markt(self): - # URL für die Suche generieren search_url = f'https://bam-mr.buchkatalog.de/search?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, "mobile-search"))) def suche_auf_labelident(self): - # URL für die Suche generieren search_url = f'https://www.labelident.com/catalogsearch/result/?q={self.search_term}' - - # Webseite aufrufen und auf das vollständige Laden warten self.driver.get(search_url) + cookie_button = self.driver.find_element(By.CLASS_NAME, "cmpboxbtn.cmpboxbtnno.cmptxt_btn_no") cookie_button.click() + kunde = self.driver.find_element(By.CLASS_NAME, "btn.btn-blue-outline.redir-mask") kunde.click() 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: @@ -522,66 +394,45 @@ class SearchThread(QThread): print(f"Fehler beim Akzeptieren von Cookies: {e}") def suche_auf_pml(self): - # URL für die Suche generieren search_url = f'https://www.pml-papiere.de/#query={self.search_term}' - - # Webseite aufrufen und auf das vollständige Laden warten self.driver.get(search_url) def suche_auf_dmfolien(self): - # URL für die Suche generieren search_url = f'https://www.dm-folien.com/shop/search?sSearch={self.search_term}' - - # Webseite aufrufen und auf das vollständige Laden warten self.driver.get(search_url) def suche_auf_proficleanshop(self): - # URL für die Suche generieren search_url = f'https://www.proficleanshop.de/searchresults/?q={self.search_term}' - - # Webseite aufrufen und auf das vollständige Laden warten self.driver.get(search_url) + kunde = self.driver.find_element(By.CLASS_NAME, "buttonTaxConfirm.fsize14.white") kunde.click() + cookie_button = self.driver.find_element(By.CLASS_NAME, "cf1lHZ.cf2MAH") cookie_button.click() def suche_auf_siepmann(self): - # URL für die Suche generieren search_url = f'https://www.siepmann.net/siepmann_shop.php?suchfeld={self.search_term}' - - # Webseite aufrufen und auf das vollständige Laden warten self.driver.get(search_url) def suche_auf_fksoehnchen(self): - # URL für die Suche generieren search_url = f'https://www.fk-soehnchen.de/index.php?lang=0&cl=search&searchparam={self.search_term}' - - # 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 - - # Webseite aufrufen und auf das vollständige Laden warten + search_url = 'https://www.agrar-fachversand.com/de/' self.driver.get(search_url) WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "main-search--field"))) # Auf die Suchleiste klicken search_box = self.driver.find_element(By.CLASS_NAME, "main-search--field") search_box.click() - - # Suchbegriff eingeben und Suche starten search_box.clear() search_box.send_keys(self.search_term) search_box.send_keys(Keys.RETURN) def suche_auf_tvv(self): - # URL für die Suche generieren - search_url = f'https://www.tvv-verpackungen.de/index.php?jtl_token=86147d041429ad7dafb0c5f1a80e61e089eb4f04ec192b004ba5e69e8aaa45c5&sp_additional_mail=&qs={self.search_term}' # Ersetzen Sie dies durch die tatsächliche URL für DVV - - # Webseite aufrufen und auf das vollständige Laden warten + search_url = f'https://www.tvv-verpackungen.de/index.php?jtl_token=86147d041429ad7dafb0c5f1a80e61e089eb4f04ec192b004ba5e69e8aaa45c5&sp_additional_mail=&qs={self.search_term}' self.driver.get(search_url) WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.ID, "search-header-mobile-top"))) @@ -589,61 +440,43 @@ class SearchThread(QThread): cookie_button.click() def suche_auf_eierschachteln(self): - # URL für die Suche generieren search_url = f'https://www.eierschachteln.de/search?sSearch={self.search_term}' - - # Webseite aufrufen und auf das vollständige Laden warten self.driver.get(search_url) + cookie_button = self.driver.find_element(By.ID, "cookie-permission--accept-only-functional-button") cookie_button.click() def suche_auf_kox(self): - # URL für die Suche generieren search_url = f'https://www.kox-direct.de/?query={self.search_term}&sid=6d0b4366af8bb99af514529b7e61ad&act=search' - - # Webseite aufrufen und auf das vollständige Laden warten self.driver.get(search_url) + cookie_button = self.driver.find_element(By.CLASS_NAME, "od-btn-white.bg-gray-lightest.w-full.mb-4.set_essential_cookies") cookie_button.click() def suche_auf_reinigungsberater(self): - # URL für die Suche generieren search_url = f'https://www.reinigungsberater.de/{self.search_term}.html' - - # Webseite aufrufen und auf das vollständige Laden warten self.driver.get(search_url) + cookie_button = self.driver.find_element(By.CLASS_NAME, "acceptMe") cookie_button.click() def suche_auf_vbshobby(self): - # URL für die Suche generieren search_url = f'https://www.vbs-hobby.com/suche/?q={self.search_term}' - - # Webseite aufrufen und auf das vollständige Laden warten self.driver.get(search_url) def suche_auf_oekonomed(self): - # URL für die Suche generieren search_url = f'https://shop.oekonomed.de/de/advanced_search_result.php?keywords={self.search_term}&inc_subcat=1' - - # Webseite aufrufen und auf das vollständige Laden warten self.driver.get(search_url) + cookie_button = self.driver.find_element(By.CLASS_NAME, "as-oil-l-item") cookie_button.click() def suche_auf_rossmann(self): - # URL für die Suche generieren search_url = f'https://www.rossmann.de/de/search/?text={self.search_term}' - - # Webseite aufrufen und auf das vollständige Laden warten self.driver.get(search_url) - def suche_auf_betzold(self): - # URL für die Suche generieren search_url = f'https://www.betzold.de/search/?q={self.search_term}' - - # Webseite aufrufen und auf das vollständige Laden warten self.driver.get(search_url) @@ -721,13 +554,13 @@ class WebseitenSucheApp(QWidget): elif category == "Landwirtschaft/Garten": row_position = 25 elif category == "Verpackungen": - row_position = 11 + row_position = 12 elif category == "Reinigungs Artikel": - row_position = 18 + row_position = 19 elif category == "Arbeitsschutz": - row_position = 23 + row_position = 24 elif category == "Deko": - row_position = 26 + row_position = 27 else: row_position = idx * (num_rows_for_category + 1) # 1 zusätzliche Zeile für die Kategorie col_position = idx % num_columns @@ -789,7 +622,7 @@ class WebseitenSucheApp(QWidget): checkbox.setStyleSheet("color: green;") if category == "Baumarkt": - green_webpages = ["Hornbach","Contorion","Gastroteile Shop","Megabad","Baubeschlagshop","TiroLED"] + green_webpages = ["Hornbach","Contorion","Gastroteile Shop","Megabad","Baubeschlagshop","TiroLED","Esska"] if any(green_webpage in webpage for green_webpage in green_webpages): checkbox.setStyleSheet("color: green;") diff --git a/webseiten.db b/webseiten.db index cd8589d..7e6cd04 100644 Binary files a/webseiten.db and b/webseiten.db differ