Das Scraping von LinkedIn-Daten kann aus mehreren Gründen unglaublich wertvoll sein:
In dem Artikel werden wichtige Techniken und Strategien hervorgehoben, einschließlich der Wichtigkeit, die Erkennung über Proxys und Header von vornherein zu vermeiden. Die requests-Bibliothek wird für die Durchführung von HTTP-Anfragen verwendet, während lxml zum Parsen von HTML-Inhalten eingesetzt wird.
Bevor Sie beginnen, stellen Sie sicher, dass Sie Python auf Ihrem Rechner installiert haben.
Installieren Sie die benötigten Bibliotheken mit pip:
pip install requests
pip install lxml
Hier ist ein umfassendes Codebeispiel für das Scrapen von LinkedIn-Stellenangeboten mit Python:
Wir werden mehrere Python-Bibliotheken benötigen:
import requests
from lxml import html
import csv
import random
Definieren Sie zunächst die LinkedIn-Jobsuche-URL, die Sie abrufen möchten.
url = 'https link'
Um LinkedIn effektiv zu scrapen, ist es wichtig, die richtigen Header zu verwenden, insbesondere den User-Agent-Header, um Anfragen von einem echten Browser zu imitieren.
user_agents = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
]
Moderne Proxy-Anbieter unterstützen häufig die interne Rotation, d. h. sie wechseln die IP-Adressen automatisch für Sie. Dadurch entfällt die Notwendigkeit, Proxys manuell aus einer Liste auszuwählen. Zur Veranschaulichung sehen Sie hier, wie1 Sie die Proxy-Rotation im Bedarfsfall handhaben würden:
proxies = {
'http': random.choice(proxies),
'https': random.choice(proxies)
}
Erfolgreiches LinkedIn Scraping hängt von der korrekten Einrichtung von Headern ab, die das Verhalten eines echten Browsers nachahmen. Richtig konfigurierte Header helfen nicht nur bei der Umgehung von Anti-Bot-Schutzsystemen, sondern verringern auch die Wahrscheinlichkeit, dass Ihre Scraping-Aktivitäten blockiert werden.
headers = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'accept-language': 'en-IN,en;q=0.9',
'dnt': '1',
'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Linux"',
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'none',
'sec-fetch-user': '?1',
'upgrade-insecure-requests': '1',
}
Um Informationen zu Stellenausschreibungen effektiv zu sammeln und zu speichern, sollten Sie zunächst einen Datenspeicher initialisieren. In Python bedeutet dies in der Regel die Erstellung einer leeren Liste. Diese Liste dient als Speichercontainer, in den Sie die aus dem HTML-Inhalt extrahierten Jobdetails einfügen können. Diese Methode stellt sicher, dass die Informationen systematisch gesammelt werden und für die weitere Verarbeitung oder Analyse leicht zugänglich sind.
job_details = []
Nach dem Senden einer HTTP-GET-Anfrage besteht der nächste Schritt darin, den HTML-Inhalt mithilfe der lxml-Bibliothek zu analysieren. Dadurch können wir durch die HTML-Struktur navigieren und die Daten identifizieren, die wir extrahieren wollen.
# Zufälliger User-Agent und Proxy mit IP-Autorisierungsmethode einstellen
headers['user-agent'] = random.choice(user_agents)
proxies = {
'http': IP:PORT,
'https': IP:PORT
}
# Senden Sie eine HTTP-GET-Anfrage an die URL
response = requests.get(url=url, headers=headers, proxies=proxies)
parser = html.fromstring(response.content)
Sobald der HTML-Inhalt geparst ist, können wir mithilfe von XPath-Abfragen spezifische Jobdetails wie Titel, Firmenname, Standort und Job-URL extrahieren. Diese Details werden in einem Wörterbuch gespeichert und an eine Liste angehängt.
# Extrahieren von Auftragsdetails aus dem HTML-Inhalt
for job in parser.xpath('//ul[@class="jobs-search__results-list"]/li'):
title = ''.join(job.xpath('.//div/a/span/text()')).strip()
company = ''.join(job.xpath('.//div/div[2]/h4/a/text()')).strip()
location = ''.join(job.xpath('.//div/div[2]/div/span/text()')).strip()
job_url = job.xpath('.//div/a/@href')[0]
job_detail = {
'title': title,
'company': company,
'location': location,
'job_url': job_url
}
job_details.append(job_detail)
Nachdem Sie die Auftragsdaten gesammelt haben, speichern Sie sie in einer CSV-Datei.
with open('linkedin_jobs.csv', 'w', newline='', encoding='utf-8') as csvfile:
fieldnames = ['title', 'company', 'location', 'job_url']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for job_detail in job_details:
writer.writerow(job_detail)
Hier ist der vollständige Code, der alle oben genannten Abschnitte kombiniert:
from selenium.webdriver.chrome.options import Options
from seleniumwire import webdriver as wiredriver
from selenium.webdriver.common.by import By
import csv
# Geben Sie die Adresse des Proxyservers mit Benutzernamen und Passwort an
proxy_address = ""
proxy_username = ""
proxy_password = ""
# Einrichten der Chrome-Optionen mit dem Proxy und der Authentifizierung
chrome_options = Options()
chrome_options.add_argument(f'--proxy-server={proxy_address}')
chrome_options.add_argument(f'--proxy-auth={proxy_username}:{proxy_password}')
# Erstellen einer WebDriver-Instanz mit selenium-wire
driver = wiredriver.Chrome(options=chrome_options)
url = 'https link'
# Führen Sie Ihre Selenium-Automatisierung mit den erweiterten Möglichkeiten von selenium-wire durch
driver.get(url)
job_details = []
all_elements = driver.find_elements(By.XPATH,
'//*[@id="main-content"]/section/ul/li')
for i in all_elements:
title = i.find_element(By.XPATH,
'.//div/div/h3').text
company = i.find_element(By.XPATH, './/div/div[2]/h4/a').text
location = i.find_element(By.XPATH, './/div/div[2]/div/span').text
job_url = i.find_element(By.XPATH,
'.//div/a').get_attribute('href')
job_detail = {
'title': title,
'company': company,
'location': location,
'job_url': job_url
}
job_details.append(job_detail)
with open('linkedin_jobs.csv', 'w', newline='', encoding='utf-8') as csvfile:
fieldnames = ['title', 'company', 'location', 'job_url']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for job_detail in job_details:
writer.writerow(job_detail)
driver.quit()
Das Extrahieren von Daten aus LinkedIn unter Verwendung von Python mit den Bibliotheken requests und lxml bietet eine leistungsstarke Möglichkeit, den Stellenmarkt zu analysieren und Personal zu rekrutieren. Um einen reibungslosen Scraping-Prozess zu gewährleisten, werden Rechenzentrums-Proxys mit hohen Geschwindigkeiten sowie ISP-Proxys mit einem höheren Vertrauensfaktor verwendet, was das Risiko von Blockaden bei automatisierten Aktionen verringert.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.ru!
Bemerkungen: 0