LinkedIn Update

Ersetze in deinem Skript den bisherigen Codeabschnitt, der den neuen Modus für die LinkedIn-Kontaktsuche (Modus 4) implementiert hat – also den gesamten Bereich ab der Definition von def search_linkedin_contact(...) bis zum Ende der Funktion def process_contacts(): – durch den oben stehenden Code.

Diese Funktionen liegen in der Sektion „NEUER MODUS: CONTACTS“ (ungefähr im mittleren Bereich deines Skripts, direkt vor dem Main-Programm).

Die zusätzlichen Debug-Ausgaben sorgen dafür, dass du in der Konsole und in der Log-Datei siehst, welche Firmen gerade verarbeitet werden, welche Suchanfragen erstellt werden und welche Ergebnisse (bzw. ob ein Kontakt gefunden wurde) zurückkommen.
This commit is contained in:
2025-04-02 19:16:42 +00:00
parent 0ebfb2c979
commit ecbf689235

View File

@@ -337,6 +337,7 @@ def search_linkedin_contact(company_name, website, position_query):
debug_print("Fehler beim Lesen des SerpAPI-Schlüssels: " + str(e)) debug_print("Fehler beim Lesen des SerpAPI-Schlüssels: " + str(e))
return None return None
query = f'site:linkedin.com/in "{position_query}" "{company_name}"' query = f'site:linkedin.com/in "{position_query}" "{company_name}"'
debug_print(f"Erstelle LinkedIn-Query: {query}")
params = { params = {
"engine": "google", "engine": "google",
"q": query, "q": query,
@@ -346,9 +347,11 @@ def search_linkedin_contact(company_name, website, position_query):
try: try:
response = requests.get("https://serpapi.com/search", params=params) response = requests.get("https://serpapi.com/search", params=params)
data = response.json() data = response.json()
debug_print(f"SerpAPI-Response für Query '{query}': {data.get('organic_results', [])[:1]}")
if "organic_results" in data and len(data["organic_results"]) > 0: if "organic_results" in data and len(data["organic_results"]) > 0:
result = data["organic_results"][0] result = data["organic_results"][0]
title = result.get("title", "") title = result.get("title", "")
debug_print(f"LinkedIn-Suchergebnis-Titel: {title}")
if "" in title: if "" in title:
parts = title.split("") parts = title.split("")
elif "-" in title: elif "-" in title:
@@ -364,18 +367,22 @@ def search_linkedin_contact(company_name, website, position_query):
else: else:
firstname = name_part firstname = name_part
lastname = "" lastname = ""
debug_print(f"Kontakt gefunden: {firstname} {lastname}, Position: {pos}")
return {"Firmenname": company_name, "Website": website, "Vorname": firstname, "Nachname": lastname, "Position": pos} return {"Firmenname": company_name, "Website": website, "Vorname": firstname, "Nachname": lastname, "Position": pos}
else: else:
debug_print(f"Kontakt gefunden, aber unvollständige Informationen: {title}")
return {"Firmenname": company_name, "Website": website, "Vorname": "", "Nachname": "", "Position": title} return {"Firmenname": company_name, "Website": website, "Vorname": "", "Nachname": "", "Position": title}
else: else:
debug_print(f"Keine LinkedIn-Ergebnisse für Query: {query}")
return None return None
except Exception as e: except Exception as e:
debug_print(f"Fehler bei der SerpAPI-Suche: {e}") debug_print(f"Fehler bei der SerpAPI-Suche: {e}")
return None return None
def process_contacts(): def process_contacts():
# Öffne das Spreadsheet und erhalte das Arbeitsblatt "Contacts" (erstelle es, falls nicht vorhanden) debug_print("Starte LinkedIn-Kontaktsuche...")
gc = gspread.authorize(ServiceAccountCredentials.from_json_keyfile_name(Config.CREDENTIALS_FILE, ["https://www.googleapis.com/auth/spreadsheets"])) gc = gspread.authorize(ServiceAccountCredentials.from_json_keyfile_name(
Config.CREDENTIALS_FILE, ["https://www.googleapis.com/auth/spreadsheets"]))
sh = gc.open_by_url(Config.SHEET_URL) sh = gc.open_by_url(Config.SHEET_URL)
try: try:
contacts_sheet = sh.worksheet("Contacts") contacts_sheet = sh.worksheet("Contacts")
@@ -383,26 +390,33 @@ def process_contacts():
contacts_sheet = sh.add_worksheet(title="Contacts", rows="1000", cols="10") contacts_sheet = sh.add_worksheet(title="Contacts", rows="1000", cols="10")
header = ["Firmenname", "Website", "Vorname", "Nachname", "Position", "Anrede", "E-Mail"] header = ["Firmenname", "Website", "Vorname", "Nachname", "Position", "Anrede", "E-Mail"]
contacts_sheet.update("A1:G1", [header]) contacts_sheet.update("A1:G1", [header])
debug_print("Neues Blatt 'Contacts' erstellt und Header eingetragen.")
main_sheet = sh.sheet1 main_sheet = sh.sheet1
data = main_sheet.get_all_values() data = main_sheet.get_all_values()
positions = ["Serviceleiter", "IT-Leiter", "Leiter After Sales", "Leiter Einsatzplanung"] positions = ["Serviceleiter", "IT-Leiter", "Leiter After Sales", "Leiter Einsatzplanung"]
new_rows = [] new_rows = []
for row in data[1:]: for idx, row in enumerate(data[1:], start=2):
company_name = row[1] if len(row) > 1 else "" company_name = row[1] if len(row) > 1 else ""
website = row[2] if len(row) > 2 else "" website = row[2] if len(row) > 2 else ""
debug_print(f"Verarbeite Firma: '{company_name}' (Zeile {idx}), Website: '{website}'")
if not company_name or not website: if not company_name or not website:
debug_print("Überspringe, da Firmenname oder Website fehlt.")
continue continue
for pos in positions: for pos in positions:
debug_print(f"Suche nach Position: '{pos}' bei '{company_name}'")
contact = search_linkedin_contact(company_name, website, pos) contact = search_linkedin_contact(company_name, website, pos)
if contact: if contact:
debug_print(f"Kontakt gefunden: {contact}")
new_rows.append([contact["Firmenname"], contact["Website"], contact["Vorname"], contact["Nachname"], contact["Position"], "", ""]) new_rows.append([contact["Firmenname"], contact["Website"], contact["Vorname"], contact["Nachname"], contact["Position"], "", ""])
else:
debug_print(f"Kein Kontakt für Position '{pos}' bei '{company_name}' gefunden.")
if new_rows: if new_rows:
last_row = len(contacts_sheet.get_all_values()) + 1 last_row = len(contacts_sheet.get_all_values()) + 1
range_str = f"A{last_row}:G{last_row + len(new_rows) - 1}" range_str = f"A{last_row}:G{last_row + len(new_rows) - 1}"
contacts_sheet.update(range_str, new_rows) contacts_sheet.update(range_str, new_rows)
debug_print(f"{len(new_rows)} Kontakte in 'Contacts' hinzugefügt.") debug_print(f"{len(new_rows)} Kontakte in 'Contacts' hinzugefügt.")
else: else:
debug_print("Keine Kontakte gefunden.") debug_print("Keine Kontakte gefunden in der Haupttabelle.")
# ==================== BRANCHENABGLEICH PER CHATGPT ==================== # ==================== BRANCHENABGLEICH PER CHATGPT ====================
def load_target_branches(): def load_target_branches():