568 lines
22 KiB
Python
568 lines
22 KiB
Python
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout,QLabel, QLineEdit, QPushButton, QCheckBox, QMessageBox
|
|
from concurrent.futures import ThreadPoolExecutor
|
|
from PyQt5.QtCore import Qt, QThread, pyqtSignal
|
|
from selenium import webdriver
|
|
from selenium.webdriver.common.by import By
|
|
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
|
|
|
|
BLANK_PAGE_URL = ""
|
|
|
|
class SearchThread(QThread):
|
|
search_finished = pyqtSignal()
|
|
|
|
def __init__(self, selected_webpages, search_term, parent=None):
|
|
super(SearchThread, self).__init__(parent)
|
|
self.selected_webpages = selected_webpages
|
|
self.search_term = search_term
|
|
self.error_message = None
|
|
self.driver = webdriver.Edge()
|
|
|
|
def run(self):
|
|
try:
|
|
for webseite in self.selected_webpages:
|
|
self.start_search_on_webseite(webseite)
|
|
except Exception as e:
|
|
self.error_message = f"Fehler bei der Suche: {e}"
|
|
finally:
|
|
self.search_finished.emit()
|
|
|
|
|
|
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 == "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 == "Lusini":
|
|
self.suche_auf_lusini()
|
|
elif webseite == "Hygi":
|
|
self.suche_auf_hygi()
|
|
elif webseite == "Schafferer":
|
|
self.suche_auf_schafferer()
|
|
elif webseite == "Gastronomie Kaufhaus":
|
|
self.suche_auf_gastronomie_kaufhaus()
|
|
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()
|
|
|
|
except Exception as e:
|
|
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/'
|
|
|
|
# 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, "inputSearchTerm")))
|
|
|
|
# Suchbegriff eingeben und Suche starten
|
|
search_box = self.driver.find_element(By.ID, "inputSearchTerm")
|
|
search_box.clear()
|
|
search_box.send_keys(self.search_term)
|
|
search_box.send_keys(Keys.RETURN)
|
|
|
|
def suche_auf_brewes(self, ):
|
|
|
|
|
|
# URL für die Suche generieren
|
|
search_url = 'https://www.brewes.de/catalogsearch/result?q='
|
|
|
|
# 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
|
|
|
|
# Such-URL generieren
|
|
search_url = f'https://www.conrad.de/search.html?search={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, "header-search")))
|
|
|
|
# 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
|
|
self.driver.get(search_url)
|
|
WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.ID, "search-input")))
|
|
|
|
# Suchbegriff eingeben
|
|
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")))
|
|
|
|
# Suchbegriff eingeben und Suche starten
|
|
search_box = self.driver.find_element(By.ID, "quicksearch_new")
|
|
search_box.clear() # Falls vorheriger Text vorhanden ist
|
|
search_box.send_keys(self.search_term)
|
|
|
|
# Formular abschicken
|
|
search_button = self.driver.find_element(By.ID, "searchbutton")
|
|
search_button.click()
|
|
|
|
def suche_auf_kosatec(self):
|
|
|
|
# Such-URL generieren
|
|
search_url = f'https://www.kosatec.de/suche?query={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.CSS_SELECTOR, "input[name='search']")))
|
|
|
|
# Suchbegriff eingeben
|
|
search_box = self.driver.find_element(By.CSS_SELECTOR, "input[name='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_hornbach(self):
|
|
|
|
# URL für die Suche generieren
|
|
search_url = 'https://www.hornbach.de/s/'
|
|
|
|
# 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.NAME, "global_search")))
|
|
|
|
# Suchbegriff eingeben und Suche starten
|
|
search_box = self.driver.find_element(By.NAME, "global_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_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
|
|
WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "search-input")))
|
|
|
|
# Suchbegriff eingeben und Suche starten
|
|
search_box = self.driver.find_element(By.CLASS_NAME, "search-input")
|
|
search_box.clear() # Falls vorheriger Text vorhanden ist
|
|
search_box.send_keys(self.search_term)
|
|
search_box.send_keys(Keys.RETURN)
|
|
|
|
def suche_auf_tiroled(self):
|
|
# URL für die Suche generieren
|
|
search_url = 'https://www.tiroled.de/de/search'
|
|
|
|
# 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.NAME, "search")))
|
|
|
|
# Suchbegriff eingeben und Suche starten
|
|
search_box = self.driver.find_element(By.NAME, "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_megabad(self):
|
|
# URL für die Suche generieren
|
|
search_url = 'https://www.megabad.com/'
|
|
|
|
# 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-bar-input")))
|
|
|
|
# Suchbegriff eingeben und Suche starten
|
|
search_box = self.driver.find_element(By.ID, "search-bar-input")
|
|
search_box.clear() # Falls vorheriger Text vorhanden ist
|
|
search_box.send_keys(self.search_term)
|
|
search_box.send_keys(Keys.RETURN)
|
|
|
|
def suche_auf_ips_shop(self):
|
|
|
|
# URL für die Suche generieren
|
|
search_url = 'https://www.ips-kts.com/de/suche?query='
|
|
|
|
# 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.NAME, "query")))
|
|
|
|
# Suchbegriff eingeben und Suche starten
|
|
search_box = self.driver.find_element(By.NAME, "query")
|
|
search_box.clear() # Falls vorheriger Text vorhanden ist
|
|
search_box.send_keys(self.search_term)
|
|
search_box.send_keys(Keys.RETURN)
|
|
|
|
def suche_auf_delker(self):
|
|
|
|
# URL für die Suche generieren
|
|
search_url = 'https://www.delker2business.com/nw2017/'
|
|
|
|
# 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.NAME, "query")))
|
|
|
|
# Suchbegriff eingeben und Suche starten
|
|
search_box = self.driver.find_element(By.NAME, "query")
|
|
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_knauss(self):
|
|
# URL für die Suche generieren
|
|
search_url = 'https://www.knauss.info/'
|
|
|
|
# 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.NAME, "sSearch")))
|
|
|
|
# Suchbegriff eingeben und Suche starten
|
|
search_box = self.driver.find_element(By.NAME, "sSearch")
|
|
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_schildershop24(self):
|
|
# URL für die Suche generieren
|
|
search_url = 'https://www.schildershop24.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-query-stichwort_neu")))
|
|
|
|
# Suchbegriff eingeben und Suche starten
|
|
search_box = self.driver.find_element(By.ID, "search-query-stichwort_neu")
|
|
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_esmeyer(self):
|
|
# URL für die Suche generieren
|
|
search_url = 'https://www.esmeyer-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.NAME, "search")))
|
|
|
|
# Suchbegriff eingeben und Suche starten
|
|
search_box = self.driver.find_element(By.NAME, "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_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")))
|
|
|
|
# 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)
|
|
|
|
# Enter-Taste drücken, um die Suche zu starten
|
|
search_box.send_keys(Keys.RETURN)
|
|
|
|
def suche_auf_lusini(self):
|
|
|
|
# URL für die Suche generieren
|
|
search_url = 'https://www.lusini.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-input")))
|
|
|
|
# Suchbegriff eingeben und Suche starten
|
|
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, um die Suche zu starten
|
|
search_box.send_keys(Keys.RETURN)
|
|
|
|
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")))
|
|
|
|
# Suchbegriff eingeben und Suche starten
|
|
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_schafferer(self):
|
|
|
|
# URL für die Suche generieren
|
|
search_url = 'https://www.schafferer.de/gastro/'
|
|
|
|
# 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, "quicksearch-input")))
|
|
|
|
# Suchbegriff eingeben und Suche starten
|
|
search_box = self.driver.find_element(By.ID, "quicksearch-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
|
|
search_box.send_keys(Keys.RETURN)
|
|
|
|
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")))
|
|
|
|
# Suchbegriff eingeben und Suche starten
|
|
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_boettcher(self):
|
|
|
|
# URL für die Suche generieren
|
|
search_url = 'https://www.bueromarkt-ag.de/' # 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):
|
|
|
|
# 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")))
|
|
|
|
# Suchbegriff eingeben und Suche starten
|
|
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 = 'https://bam-mr.buchkatalog.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, "mobile-search")))
|
|
|
|
# Suchbegriff eingeben und Suche starten
|
|
search_box = self.driver.find_element(By.ID, "mobile-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)
|
|
|
|
categories = ["IT/EDV", "Haustechnik","Küche", "Verwaltung"]
|
|
webpages = [
|
|
["Reichelt", "Conrad", "Kosatec"],
|
|
["Hornbach", "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"]
|
|
]
|
|
|
|
class WebseitenSucheApp(QWidget):
|
|
def __init__(self):
|
|
super().__init__()
|
|
|
|
self.category_webpages_mapping = {category: webpages for category, webpages in zip(categories, webpages)}
|
|
|
|
self.selected_webpages = {webpage: False for category_webpages in webpages for webpage in category_webpages}
|
|
|
|
self.search_term = ""
|
|
self.driver = None
|
|
|
|
self.init_ui()
|
|
|
|
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)
|
|
|
|
for webpage in category_webpages:
|
|
checkbox = QCheckBox(webpage)
|
|
checkbox.setChecked(self.selected_webpages[webpage])
|
|
checkbox.stateChanged.connect(self.make_checkbox_callback(webpage))
|
|
layout.addWidget(checkbox)
|
|
# Suchbegriff-Eingabe
|
|
search_label = QLabel("Geben Sie den Suchbegriff ein:")
|
|
layout.addWidget(search_label)
|
|
|
|
search_input = QLineEdit(self)
|
|
search_input.textChanged.connect(self.update_search_term)
|
|
layout.addWidget(search_input)
|
|
|
|
# Suchen-Button
|
|
search_button = QPushButton("Suche starten", self)
|
|
search_button.clicked.connect(self.start_search)
|
|
layout.addWidget(search_button)
|
|
|
|
# Neues Suche-Button
|
|
new_search_button = QPushButton("Neue Suche starten", self)
|
|
new_search_button.clicked.connect(self.new_search)
|
|
layout.addWidget(new_search_button)
|
|
|
|
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.update_webpage_state(webpage, state)
|
|
return checkbox_callback
|
|
|
|
def update_webpage_state(self, webpage, state):
|
|
self.selected_webpages[webpage] = state == 2 # 2 entspricht dem Zustand "ausgewählt"
|
|
|
|
def update_search_term(self, text):
|
|
self.search_term = text
|
|
|
|
def start_search(self):
|
|
selected_webpages = [webpage for webpage, selected in self.selected_webpages.items() if selected]
|
|
|
|
if not selected_webpages:
|
|
QMessageBox.warning(self, "Fehler", "Bitte wählen Sie mindestens eine Webseite aus.")
|
|
return
|
|
|
|
if not self.search_term:
|
|
QMessageBox.warning(self, "Fehler", "Bitte geben Sie einen Suchbegriff ein.")
|
|
return
|
|
|
|
# Starte den Such-Thread
|
|
self.search_thread = SearchThread(selected_webpages, self.search_term)
|
|
self.search_thread.search_finished.connect(self.search_finished)
|
|
self.search_thread.start()
|
|
|
|
def search_finished(self):
|
|
self.search_thread.quit()
|
|
self.search_thread.wait()
|
|
if hasattr(self.search_thread, 'error_message') and self.search_thread.error_message:
|
|
QMessageBox.critical(None, "Fehler", self.search_thread.error_message)
|
|
else:
|
|
QMessageBox.information(None, "Suche abgeschlossen", "Die Suche wurde erfolgreich abgeschlossen.")
|
|
|
|
|
|
|
|
def new_search(self):
|
|
self.close_driver()
|
|
print("Neue Suche starten")
|
|
|
|
if __name__ == '__main__':
|
|
app = QApplication(sys.argv)
|
|
window = WebseitenSucheApp()
|
|
sys.exit(app.exec_())
|