Glassdoor ist eine der besten Plattformen, die eine Vielzahl von Informationen für Arbeitssuchende und Einstellungswillige bereitstellt, darunter Gehaltsinformationen, Arbeitgeberbewertungen und Stellengesuche. In dieser Anleitung gehen wir durch den Prozess des Scrapens von Stellenangeboten von Glassdoor mit Python und Playwright. Playwright ist hier unerlässlich, da Glassdoor strenge Anti-Bot-Maßnahmen einsetzt, die herkömmliche Scraping-Bibliotheken kennzeichnen und blockieren können. Mit Playwright können wir einen echten Browser simulieren und Proxys einbinden, wodurch wir diese Erkennungssysteme umgehen können.
Aufgrund der robusten Anti-Scraping-Mechanismen von Glassdoor können direkte Anfragen mit Bibliotheken wie Requests zu IP-Blockierungen oder CAPTCHA-Herausforderungen führen. Playwright ermöglicht es uns, einen Browser zu automatisieren und unsere Interaktionen menschenähnlicher zu gestalten. Durch das Hinzufügen von Proxys und Browser-Headern können wir die Erkennung weiter vermeiden.
Um loszulegen, müssen Sie Playwright und die lxml-Bibliothek für das HTML-Parsing installieren. Sie können sie wie folgt installieren:
pip install playwright lxml
playwright install
Wir gehen die einzelnen Schritte durch, vom Laden der Seite mit Playwright bis zum Extrahieren der Jobdetails und Speichern der Daten in einer CSV-Datei.
Richten Sie zunächst Playwright mit einem Proxy ein, um eine Verbindung zu Glassdoor herzustellen. Dies verhindert, dass die Seite blockiert wird, und ermöglicht es dem Browser, die Seite so zu laden, als ob ein echter Benutzer die Website besuchen würde.
from playwright.async_api import async_playwright
from lxml.html import fromstring
async def scrape_job_listings():
async with async_playwright() as p:
browser = await p.chromium.launch(
headless=False,
proxy={"server": '', 'username': '', 'password': ''}
)
page = await browser.new_page()
await page.goto('https link', timeout=60000)
content = await page.content()
await browser.close()
return content
# Aufruf der Funktion zum Abrufen des Seiteninhalts
html_content = await scrape_job_listings()
Nachdem Sie die Seite geladen haben, verwenden Sie lxml, um den HTML-Inhalt zu analysieren und die relevanten Stelleninformationen zu extrahieren. Im Folgenden erfahren Sie, wie Sie den Jobtitel, den Standort, das Gehalt und andere Details für jedes Stellenangebot auslesen:
parser = fromstring(html_content)
job_posting_elements = parser.xpath('//li[@data-test="jobListing"]')
jobs_data = []
for element in job_posting_elements:
job_title = element.xpath('.//a[@data-test="job-title"]/text()')[0]
job_location = element.xpath('.//div[@data-test="emp-location"]/text()')[0]
salary = ' '.join(element.xpath('.//div[@data-test="detailSalary"]/text()')).strip()
job_link = element.xpath('.//a[@data-test="job-title"]/@href')[0]
easy_apply = bool(element.xpath('.//div[@data-role-variant="featured"]'))
company = element.xpath('.//span[@class="EmployerProfile_compactEmployerName__LE242"]/text()')[0]
job_data = {
'company': company,
'job_title': job_title,
'job_location': job_location,
'job_link': job_link,
'salary': salary,
'easy_apply': easy_apply
}
jobs_data.append(job_data)
Sobald wir die Auftragsdetails extrahiert haben, können wir sie zur einfachen Datenanalyse in einer CSV-Datei speichern.
import csv
with open('glassdoor_job_listings.csv', 'w', newline='', encoding='utf-8') as file:
writer = csv.DictWriter(file, fieldnames=['company', 'job_title', 'job_location', 'job_link', 'salary', 'easy_apply'])
writer.writeheader()
writer.writerows(jobs_data)
import csv
from playwright.async_api import async_playwright
from lxml.html import fromstring
async def scrape_job_listings():
# Playwright-Browser mit Proxy einrichten, um Erkennung zu vermeiden
async with async_playwright() as p:
browser = await p.chromium.launch(
headless=False,
proxy={"server": '', 'username': '', 'password': ''}
)
page = await browser.new_page()
await page.goto('https://www.glassdoor.com/Job/united-states-software-engineer-jobs-SRCH_IL.0,13_IN1_KO14,31.htm', timeout=60000)
# Abrufen des Seiteninhalts und Schließen des Browsers
content = await page.content()
await browser.close()
# Parsen des Inhalts mit lxml
parser = fromstring(content)
job_posting_elements = parser.xpath('//li[@data-test="jobListing"]')
# Daten für jedes Stellenangebot extrahieren
jobs_data = []
for element in job_posting_elements:
job_title = element.xpath('.//a[@data-test="job-title"]/text()')[0]
job_location = element.xpath('.//div[@data-test="emp-location"]/text()')[0]
salary = ' '.join(element.xpath('.//div[@data-test="detailSalary"]/text()')).strip()
job_link = "https://www.glassdoor.com" + element.xpath('.//a[@data-test="job-title"]/@href')[0]
easy_apply = bool(element.xpath('.//div[@data-role-variant="featured"]'))
company = element.xpath('.//span[@class="EmployerProfile_compactEmployerName__LE242"]/text()')[0]
job_data = {
'company': company,
'job_title': job_title,
'job_location': job_location,
'job_link': job_link,
'salary': salary,
'easy_apply': easy_apply
}
jobs_data.append(job_data)
# Speichern der Daten in einer CSV-Datei
with open('glassdoor_job_listings.csv', 'w', newline='', encoding='utf-8') as file:
writer = csv.DictWriter(file, fieldnames=['company', 'job_title', 'job_location', 'job_link', 'salary', 'easy_apply'])
writer.writeheader()
writer.writerows(jobs_data)
# Ausführen der Scraping-Funktion
import asyncio
asyncio.run(scrape_job_listings())
Erläuterung des vollständigen Kodex:
Beim Scraping von Glassdoor oder einer anderen Website ist es wichtig, verantwortungsvolle Scraping-Praktiken zu befolgen:
Wenn Sie wissen, wie Sie die Daten von Glassdoor mithilfe von Python und Playwright auslesen können, werden Sie Ihre Möglichkeiten zum Sammeln von Stellenangeboten leicht verbessern. In Kombination mit der Verwendung von Proxys und geeigneten Headern ist diese Technik ein wirksames Mittel, um das Risiko, von Glassdoor blockiert zu werden, zu beseitigen. Sie müssen auch die ethischen Richtlinien für das Scraping beachten, um zu verhindern, dass die Server von Glassdoor abstürzen. Wenn Sie sich an diese Maßnahmen halten, können Sie jetzt nützliche Beschäftigungsinformationen von Glassdoor für Ihren eigenen Gebrauch oder den Ihres Unternehmens sammeln und verarbeiten.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
Bemerkungen: 0