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 4b13e3d22a
commit 166fb5fa4d

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