Die Webseiten wurden farblich markiert um zu sehen auf welchen Webseiten man auf jedenfall bestellen kann und welche nicht.

Außerdem wurde der Driver von Edge auf Chrome gewechselt.
Zudem wurde die suche auf Böttcher angepasst.
This commit is contained in:
Domenik Rath 2023-11-28 16:27:57 +01:00
parent acb70ba1e0
commit bd51ecc0bb

View File

@ -7,6 +7,8 @@ from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
import sys import sys
import concurrent.futures import concurrent.futures
@ -20,10 +22,11 @@ class SearchThread(QThread):
self.selected_webpages = selected_webpages self.selected_webpages = selected_webpages
self.search_term = search_term self.search_term = search_term
self.error_message = None self.error_message = None
self.driver = webdriver.Edge() self.driver = webdriver.Chrome()
def run(self): def run(self):
try: try:
for webseite in self.selected_webpages: for webseite in self.selected_webpages:
self.start_search_on_webseite(webseite) self.start_search_on_webseite(webseite)
except Exception as e: except Exception as e:
@ -84,6 +87,8 @@ class SearchThread(QThread):
self.suche_auf_bueroshop24() self.suche_auf_bueroshop24()
elif webseite == "Buchhandlung am Markt": elif webseite == "Buchhandlung am Markt":
self.suche_buchhandlung_am_markt() self.suche_buchhandlung_am_markt()
elif webseite == "Transpak":
self.suche_auf_transpak()
except Exception as e: except Exception as e:
print(f"Fehler bei der Suche auf {webseite}: {e}") print(f"Fehler bei der Suche auf {webseite}: {e}")
@ -415,19 +420,13 @@ class SearchThread(QThread):
def suche_auf_boettcher(self): def suche_auf_boettcher(self):
# URL für die Suche generieren # 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 # Webseite aufrufen und auf das vollständige Laden warten
self.driver.get(search_url) self.driver.get(search_url)
WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.ID, "autocomplete-0-input"))) 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): def suche_auf_bueroshop24(self):
@ -462,12 +461,31 @@ class SearchThread(QThread):
# Enter-Taste drücken, um die Suche zu starten # Enter-Taste drücken, um die Suche zu starten
search_box.send_keys(Keys.RETURN) 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 = [ webpages = [
["Reichelt", "Conrad", "Kosatec"], ["Reichelt: Technikbedarf", "Conrad: Technik Marktplatz", "Kosatec: Elektro Artikel"],
["Hornbach", "Contorion", "Gastroteile Shop", "TiroLED", "Megabad", "IPS", "Brewes", "Delker", "Knauss", "Schildershop24", "Häfele"], ["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"], ["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): class WebseitenSucheApp(QWidget):
@ -495,6 +513,15 @@ class WebseitenSucheApp(QWidget):
checkbox = QCheckBox(webpage) checkbox = QCheckBox(webpage)
checkbox.setChecked(self.selected_webpages[webpage]) checkbox.setChecked(self.selected_webpages[webpage])
checkbox.stateChanged.connect(self.make_checkbox_callback(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) layout.addWidget(checkbox)
# Suchbegriff-Eingabe # Suchbegriff-Eingabe
search_label = QLabel("Geben Sie den Suchbegriff ein:") search_label = QLabel("Geben Sie den Suchbegriff ein:")