Lo scraping dei dati di LinkedIn può essere incredibilmente prezioso per diversi motivi:
L'articolo sottolineerà tecniche e strategie importanti, tra cui l'importanza di evitare il rilevamento tramite proxy e intestazioni in primo luogo. La libreria requests sarà utilizzata per effettuare richieste HTTP, mentre lxml sarà impiegata per analizzare il contenuto HTML.
Prima di iniziare, assicuratevi di avere Python installato sulla vostra macchina.
Installare le librerie necessarie usando pip:
pip install requests
pip install lxml
Ecco un esempio completo di codice per lo scraping degli annunci di lavoro di LinkedIn utilizzando Python:
Avremo bisogno di diverse librerie Python:
import requests
from lxml import html
import csv
import random
Iniziare definendo l'URL di ricerca di lavoro su LinkedIn che si vuole scrappare.
url = 'https link'
Per effettuare uno scrape di LinkedIn in modo efficace, è fondamentale utilizzare le intestazioni corrette, in particolare l'intestazione User-Agent, per imitare le richieste provenienti da un browser reale.
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'
]
I moderni provider di proxy spesso supportano la rotazione interna, ovvero ruotano automaticamente gli indirizzi IP per voi. Questo elimina la necessità di selezionare manualmente i proxy da un elenco. Tuttavia, a scopo illustrativo, ecco come1 si potrebbe gestire la rotazione dei proxy in caso di necessità:
proxies = {
'http': random.choice(proxies),
'https': random.choice(proxies)
}
Il successo dello scraping di LinkedIn dipende dalla corretta configurazione delle intestazioni che emulano il comportamento di un browser reale. Le intestazioni configurate correttamente non solo aiutano a eludere i sistemi di protezione anti-bot, ma riducono anche le possibilità che le vostre attività di scraping vengano bloccate.
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',
}
Per raccogliere e memorizzare efficacemente le informazioni sugli annunci di lavoro, è necessario iniziare inizializzando un archivio di dati. In Python, questo comporta la creazione di un elenco vuoto. Questo elenco servirà come contenitore di dati in cui aggiungere i dettagli del lavoro, man mano che vengono estratti dal contenuto HTML. Questo metodo garantisce che le informazioni siano raccolte sistematicamente e facilmente accessibili per ulteriori elaborazioni o analisi.
job_details = []
Dopo aver inviato una richiesta HTTP GET, il passo successivo è analizzare il contenuto HTML utilizzando la libreria lxml. Questo ci permetterà di navigare attraverso la struttura HTML e di identificare i dati che vogliamo estrarre.
# Impostazione di User-Agent e proxy casuali con metodo di autorizzazione IP
headers['user-agent'] = random.choice(user_agents)
proxies = {
'http': IP:PORT,
'https': IP:PORT
}
# Inviare una richiesta HTTP GET all'URL
response = requests.get(url=url, headers=headers, proxies=proxies)
parser = html.fromstring(response.content)
Una volta analizzato il contenuto HTML, possiamo estrarre i dettagli di un lavoro specifico, come il titolo, il nome dell'azienda, la posizione e l'URL del lavoro, utilizzando le query XPath. Questi dati vengono memorizzati in un dizionario e aggiunti a un elenco.
# Estrarre i dettagli del lavoro dal contenuto HTML
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)
Dopo aver raccolto i dati del lavoro, salvarli in un file CSV.
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)
Ecco il codice completo, che combina tutte le sezioni precedenti:
from selenium.webdriver.chrome.options import Options
from seleniumwire import webdriver as wiredriver
from selenium.webdriver.common.by import By
import csv
# Specificare l'indirizzo del server proxy con nome utente e password
proxy_address = ""
proxy_username = ""
proxy_password = ""
# Impostare le opzioni di Chrome con il proxy e l'autenticazione
chrome_options = Options()
chrome_options.add_argument(f'--proxy-server={proxy_address}')
chrome_options.add_argument(f'--proxy-auth={proxy_username}:{proxy_password}')
# Creare un'istanza di WebDriver con selenium-wire
driver = wiredriver.Chrome(options=chrome_options)
url = 'https link'
# Eseguire l'automazione Selenium con le funzionalità avanzate di selenium-wire
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()
L'estrazione di dati da LinkedIn utilizzando Python con le librerie requests e lxml offre un modo potente per analizzare il mercato del lavoro e reclutare personale. Per garantire un processo di scraping senza intoppi, vengono utilizzati proxy di data center ad alta velocità e proxy di ISP con un fattore di fiducia più elevato, che riduce il rischio di blocchi delle azioni automatizzate.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.ru!
Commenti: 0