ich habe ein kleinen web scraper geschrieben, der Standorte von einer Filiale in eine excel-tabelle abspeichert.
Dafür wird einfach auf einer Internetseite , die Postleidzahl eingegeben.
Da es sehr mühselig ist jede Postleidzahl aus Deutschland immer wieder eingeben zu lassen wollte ich eine schleife schreiben die das ganze "Programm",
immer wieder mit einer neuen Postleidzahl auszuführen oder die zu ändern.
Vorab, ich bin kein Profi und arbeite seid einigen Wochen erst mit Python.
Ich habe mir das alles einfach so zusammen gebastelt, kann natürlich sein das ich zu schwer denke oder sowas.
Hat da jemand eine Idee ?
Danke schonmal.
Code: Alles auswählen
from tqdm import tqdm
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.action_chains import ActionChains
import time
import pandas as pd
import xlsxwriter
import os
import sys
import subprocess
S = Service("C:\Program Files (x86)\chromedriver.exe")
chromeOptions = Options()
chromeOptions.headless = False
Post_Zahl = input("Postleidzahl: ")
ExselName = input("DateiName: ") + ".xlsx"
for i in tqdm (range (147),
desc="Loading…",
ascii=False, ncols=75):
time.sleep(0.01)
print("Bot starten.")
driver = webdriver.Chrome(service=S, options=chromeOptions)
driver.maximize_window()
driver.get(".........")
time.sleep(2)
x = driver.find_element(by=By.XPATH, value= "//button[@id='onetrust-accept-btn-handler']")
x.send_keys(Keys.ENTER)
#//button[@id='onetrust-accept-btn-handler']
time.sleep(1)
y = driver.find_element(by=By.XPATH, value= "//button[@id='btn-entry-age-allow']")
y.send_keys(Keys.ENTER)
z = driver.find_element(by=By.CLASS_NAME, value= "mapboxgl-ctrl-geocoder--input")
actionChains = ActionChains(driver)
actionChains.double_click(z).perform()
time.sleep(1)
z.send_keys(Keys.DELETE)
v = driver.find_element(by=By.CLASS_NAME, value= "mapboxgl-ctrl-geocoder--input")
actionChains = ActionChains(driver)
actionChains.double_click(v).perform()
time.sleep(1)
v.send_keys(Keys.DELETE)
z_1= driver.find_element(by=By.CLASS_NAME, value= "mapboxgl-ctrl-geocoder--input")
actionChains = ActionChains(driver)
actionChains.double_click(z_1).perform()
time.sleep(1)
z_1.send_keys(Keys.DELETE)
z_2= driver.find_element(by=By.CLASS_NAME, value= "mapboxgl-ctrl-geocoder--input")
actionChains = ActionChains(driver)
actionChains.double_click(z_2).perform()
time.sleep(1)
z_2.send_keys(Keys.DELETE)
z_3= driver.find_element(by=By.CLASS_NAME, value= "mapboxgl-ctrl-geocoder--input")
actionChains = ActionChains(driver)
actionChains.double_click(z_3).perform()
time.sleep(1)
z_3.send_keys(Post_Zahl)
z_4= driver.find_element(by=By.CLASS_NAME, value= "mapboxgl-ctrl-geocoder--input")
time.sleep(1)
z_4.send_keys(Keys.ENTER)
#Locaters
time.sleep(5)
Heandler_Name = driver.find_elements(by=By.XPATH, value= "//div[@class='store-search-results']/ul/li//div[@class='item name']/span")
Heanlder_Adresse = driver.find_elements(by=By.XPATH, value= "//div[@class='store-search-results']/ul/li//div[1][@class='item adress-text']/span[1]")
df_HeandlerListe = pd.DataFrame(columns=['Name', 'Adresse'])
df_HeandlerListe
for i in range(len(Heandler_Name)):
df_HeandlerListe = df_HeandlerListe.append({'Name': Heandler_Name[i].text, 'Adresse': Heanlder_Adresse[i].text}, ignore_index=True)
df_HeandlerListe
df_HeandlerListe.to_excel(ExselName, index = False)
driver.close()
print("Fertig")
time.sleep(2)
subprocess.call([sys.executable, os.path.realpath(__file__)] + sys.argv[1:])