Скрапинг данных с LinkedIn является особенно полезным для:
В руководстве будут рассмотрены ключевые методы и стратегии, в том числе использование прокси и заголовков для минимизации риска обнаружения. Для отправки HTTP-запросов будет применена библиотека requests, а для парсинга HTML-контента — lxml.
Перед началом убедитесь, что на вашем компьютере установлен Python.
Установите необходимые библиотеки с помощью pip:
pip install requests
pip install lxml
Вот подробный пример кода для скрапинга вакансий LinkedIn с использованием Python.
Нам понадобится несколько библиотек Python:
import requests
from lxml import html
import csv
import random
Для начала процесса скрапинга необходимо определить URL поиска вакансий на LinkedIn, который будет использоваться для извлечения данных.
url = 'HTTPS ссылка'
Чтобы успешно скрапить LinkedIn, критически важно использовать аутентичные заголовки User-Agent для имитации запросов реальных браузеров. Это помогает скрыть автоматизированный характер действий и минимизировать риски блокировки.
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'
]
Многие современные прокси-сервисы предлагают функцию автоматической ротации IP-адресов, что позволяет избежать необходимости ручной смены прокси. Это значительно упрощает процесс и повышает эффективность скрапинга. В случае необходимости ручной настройки, вот пример того, как можно организовать ротацию прокси:
proxies = {
'http': random.choice(proxies),
'https': random.choice(proxies)
}
Ключевой аспект в успешном скрапинге LinkedIn заключается в настройке заголовков, которые помогают имитировать поведение настоящего браузера. Корректно настроенные заголовки не только способствуют обходу систем защиты от ботов, но и снижают вероятность блокировки активности скрапинга.
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',
}
Для систематического сбора и хранения информации о вакансиях необходимо создать хранилище данных. Это можно выполнить, создав пустой список в Python, который будет использоваться для последующего сохранения всех собранных данных о работе. Этот подход позволяет удобно добавлять собранную информацию по мере её извлечения из HTML-контента.
job_details = []
Осуществив отправку HTTP GET-запроса, следующий этап включает парсинг полученного HTML-контента. Использование библиотеки lxml для этой задачи обеспечивает возможность эффективной навигации по документу HTML.
# Установка случайного User-Agent и прокси с авторизацией по IP
headers['user-agent'] = random.choice(user_agents)
proxies = {
'http': IP:PORT,
'https': IP:PORT
}
# Отправка HTTP GET-запроса на URL
response = requests.get(url=url, headers=headers, proxies=proxies)
parser = html.fromstring(response.content)
После парсинга HTML-содержимого можно извлечь конкретные детали вакансий, такие как название должности, название компании, местоположение и URL вакансии, используя запросы XPath. Эти детали сохраняются в словаре и добавляются в список.
# Извлечение деталей вакансий из 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)
После сбора данных о вакансиях сохраните их в 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)
Вот полный код, который объединяет все вышеупомянутые разделы:
from selenium.webdriver.chrome.options import Options
from seleniumwire import webdriver as wiredriver
from selenium.webdriver.common.by import By
import csv
# Укажите адрес прокси-сервера и данные авторизации
proxy_address = ""
proxy_username = ""
proxy_password = ""
# Настройте параметры Chrome с прокси и аутентификацией
chrome_options = Options()
chrome_options.add_argument(f'--proxy-server={proxy_address}')
chrome_options.add_argument(f'--proxy-auth={proxy_username}:{proxy_password}')
# Создайте экземпляр WebDriver с selenium-wire
driver = wiredriver.Chrome(options=chrome_options)
url = 'https ссылка'
# Выполните автоматизацию Selenium с расширенными возможностями 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()
Извлечение данных с LinkedIn через Python, используя библиотеки requests и lxml, обеспечивает мощный способ анализа рынка труда и найма персонала. Для бесперебойного процесса скрапинга используются датацентр прокси с высокой скоростью, а также ISP прокси с более высоким траст-фактором, благодаря которому снижается риск блокировок автоматизированных действий.
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.ru!
Комментарии: 0