Как извлекать профили LinkedIn в 2026 году: Пошаговое руководство
TL;DR
Только общедоступные поля профиля LinkedIn безопасны для сбора. Всё, что видно незалогиненному посетителю (имя, заголовок, текущая должность, местоположение и публичные посты), относится к другой юридической и технической категории, чем данные с ограниченным доступом, такие как связи, сообщения или полная история работы.
Условия обслуживания LinkedIn прямо запрещают автоматизированный скрапинг, и его система обнаружения ботов может ограничивать скорость, блокировать или банить аккаунт или IP-адрес, делающий запросы.
Дело hiQ Labs против LinkedIn не сделало скрапинг LinkedIn "законным" в общем смысле. Девятый окружной суд установил, что скрапинг публичных данных не нарушает федеральный закон о компьютерном мошенничестве и злоупотреблениях, но отдельное решение 2022 года установило, что hiQ нарушил условия контракта LinkedIn, и дело закончилось постоянным судебным запретом против hiQ, а не победой для скраперов.
Рабочий путь извлечения использует requests и BeautifulSoup (или Playwright для секций, отрендеренных на JavaScript) по адресу публичного профиля, парся встроенные структурированные данные страницы вместо того, чтобы угадывать имена CSS-классов, которые меняются без предупреждения.
Ограничение скорости, управление сессией и репутация IP определяют, будет ли запрос успешным, а не хитрые обходные пути — рассматривайте это как надежную инженерную практику, а не как уклонение.
GDPR и CCPA применяются к собранным личным данным так же, как они применяются к любым другим личным данным, которые вы храните, поэтому законное основание и лимит хранения имеют значение, прежде чем вы создадите какую-либо базу данных имен и должностей.
Создание списка потенциальных клиентов или базы данных контактов из собранных профилей несет свою собственную юридическую ответственность отдельно от метода скрапинга, и сбор на коммерческом уровне следует сначала обсудить с юридической консультацией.
Попробуйте Nstproxy - Начните бесплатный тест сегодня
Введение: что на самом деле означает "скрапинг профилей LinkedIn"
Страницы профилей LinkedIn смешивают две совершенно разные поверхности данных: подмножество, доступное для любого желающего, и подмножество, доступное только после входа в систему. Незалогиненный посетитель на linkedin.com/in/some-name обычно видит имя человека, заголовок, текущую компанию и должность, общее местоположение и любые посты, которые они сделали публичными — ту же информацию, которую может индексировать поисковая система. Всё, что за пределами этой точки, включая полные списки связей, личные сообщения и наиболее детализированные разделы истории, находится за стеной аутентификации LinkedIn.
Этот гид охватывает только публичную поверхность. Он показывает работающий подход на Python для извлечения этих публичных данных, объясняет, почему решение о соблюдении норм, лежащее в основе технического подхода, имеет большее значение, чем сам код, и ясно указывает, где проходит граница между "возможным" и "разрешённым".
Сценарии использования данных публичных профилей LinkedIn
Рекрутеры, торговые группы и исследователи извлекают публичные данные LinkedIn для узкого круга регулярно выполняемых задач, и у каждой есть своя степень терпимости к риску и масштабу.
Увеличение потока рекрутинга — прикрепление текущей должности кандидата и публичного заголовка к существующей записи отслеживания кандидатов, один запрос за раз, а не массовый скан.
Исследование организационной структуры компании — подтверждение того, кто в настоящее время занимает должность в целевом аккаунте перед звонком по продаже, с использованием отдельных проверок публичных профилей.
Академические и рыночные исследования по публичным карьерным тенденциям — агрегация анонимизированных, публично видимых названий должностей и отраслей в выборке, без сохранения имен.
Мониторинг бренда и упоминаний — проверка, упоминает ли публичный пост компанию или продукт, аналогично мониторингу любой другой публичной веб-страницы.
Ни один из этих сценариев использования не требует доступа к списку связей, почтовому ящику или любому полю, закрытому за входом в систему — и ни один из них не оправдывает проведение неограниченного автоматизированного сканирования по всей базе членов LinkedIn. Тот же целенаправленный, одностраничный шаблон встречается в скрапинге публичных данных о продуктах Amazon: извлеките одну страницу за раз, по определенному расписанию, а не рассматривайте весь сайт как единую цель для сканирования.
Законно ли скрапить профили LinkedIn?
Собственное Соглашение пользователя LinkedIn запрещает автоматизированный сбор данных с платформы, и нарушение этого соглашения угрожает приостановкой аккаунта для вовлеченного аккаунта и, в некоторых случаях, юридическими действиями со стороны LinkedIn против оператора. Это запрещение применяется независимо от того, являются ли собираемые данные технически публичными — "публичное" описывает, кто может просматривать данные, а не то, согласился ли LinkedIn на автоматизированный сбор этих данных.
Чаще всего упоминаемое дело по этому вопросу — это hiQ Labs против LinkedIn, и его фактический результат более ограничен, чем предполагает большинство резюме. Девятый окружной суд решил в 2019 году, а затем снова в 2022 году после направления дела Верховным Судом в 2021 году, связанного с делом Van Buren против Соединенных Штатов, что сбор данных, доступных публично без входа в систему, не нарушает федеральный Закон о мошенничестве и злоупотреблениях в компьютерной сфере (CFAA) — то, что LinkedIn является частной компанией, не дает оснований для применения федерального антимошеннического законодательства против сборщика данных, который никогда не обходил никаких средств контроля доступа. Этот прецедент все еще действителен, и он был усилен отдельным федеральным решением 2024 года в другом споре по сбору данных, которое вновь отвергло теорию CFAA против сборщика, собирающего общедоступные данные.
Но это же судебное разбирательство hiQ в целом не завершилось успешно для hiQ. В ноябре 2022 года тот же окружной суд установил, что hiQ отдельно нарушил Пользовательское соглашение LinkedIn, собирая данные и направляя подрядчиков создавать аккаунты для работы — это притязание по контракту, а не притязание по CFAA. Дело закрылось в декабре 2022 года с установленным постоянным судебным запретом против hiQ, а не решением суда в пользу hiQ. Практический урок: выживание испытания CFAA и выживание по делу о нарушении контракта — это два отдельных юридических вопроса, и LinkedIn выиграл по второму из них против того же истца, который выиграл первый.
Три практических правила вытекают из этого:
Собирайте только данные, видимые без входа в систему, и никогда не собирайте поля, закрытые аутентификацией LinkedIn (связи, сообщения, полные разделы профиля, которые видны только авторизованным пользователям).
Считайте GDPR и CCPA применимыми в момент, когда собранная запись идентифицирует реального человека. Это означает наличие документированного законного основания для хранения данных, минимизацию хранимого до того, что реально необходимо для случая использования, и недопустимость создания незапрашиваемой базы данных для контактного обращения исключительно из собранных имен и электронных адресов.
Привлекайте юридического консультанта перед любыми усилиями по сбору данных в коммерческом масштабе, поскольку риск нарушения контракта, продемонстрированный в деле hiQ, существует независимо от того, что разрешает CFAA.
Этот гид не охватывает, и не будет охватывать, обход входного экрана LinkedIn, преодоление CAPTCHA, автоматизацию фальшивых аккаунтов или любые техники, направленные на уклонение от обнаружения ботов LinkedIn в большом масштабе — это переходит из "сбор общедоступных данных" в "обход средств контроля доступа", что противоречит условиям LinkedIn и представляет собой существенно иную, более рискованную юридическую позицию, чем вопрос о публичных данных, поднятый выше.
Подход и соответствие инструментов
Рабочий процесс, описанный ниже, состоит из трех движущихся частей: получение страницы публичного профиля, анализ встроенных структурированных данных вместо хрупких селекторов CSS и управление запросами с такой скоростью и из IP с репутацией, которая не блокирует сбор данных до его начала.
Публичные страницы профиля LinkedIn, представленные посетителю без входа в систему, включают блок JSON-LD <script type="application/ld+json"> с схемой Person — имя, должность и место работы в структурированном формате, предназначенном для поиска для поисковых систем. Анализ этого блока более устойчив, чем анализ визуальных HTML-классов, которые LinkedIn меняет без предупреждения и которые варьируются в зависимости от региона и того, рендерится ли страница на сервере или обрабатывается на стороне клиента.
Оставляющей переменной является сам запрос. Единичный случайный поиск из жилого подключения редко вызывает какие-либо подозрения. Порыв множественных запросов в минуту из одного IP-адреса дата-центра — это тот шаблон, на который система автоматического обнаружения трафика LinkedIn настроена ловить, независимо от того, какие данные запрашиваются. Здесь и подходит инфраструктура прокси: не как способ обойти аутентификацию, а как способ сохранить умеренный, распределенный шаблон запросов, который выглядит как обычный резидентный трафик, на который он должен быть похож, чтобы повторы и пагинация работали предсказуемо, а не давали сбой в середине партии.
Прокси-серверы Residential Lite Proxies от Nstproxy построены именно для такой стабильной, средней по объему работы по сбору данных. Линия черпает из пула более 50 миллионов реальных резидентных IP-адресов по более чем 200 странам и регионам, оплачиваемых по предоплаченным пакетам, а не по подписке с автоматическим продлением, что подходит для нагрузки, которая работает порциями, а не непрерывно. Для конкретного случая использования этого урока:
Пул резидентных IP-адресов — запросы направляются через реальные соединения потребительских интернет-провайдеров, а не диапазоны дата-центров, что соответствует шаблону трафика, который ожидается от легитимного, низкочастотного поиска публичного профиля.
Широкое покрытие стран — полезно, когда проверяемые профили принадлежат людям из разных регионов, и имеет значение местоположение исходного запроса для последовательной отрисовки страниц.
Предоплата, оплата по мере использования — подходит для ограниченного, случайного поиска лучше, чем фиксированное ежемесячное обязательство, рассчитанное на непрерывное сканирование.
Команды, которые перерастают самописный скрипт requests/BeautifulSoup, — потому что им требуется рендеринг JavaScript, повторные попытки и структурированный вывод (Markdown, JSON или скриншоты) упакованный в один API вместо поддерживаемого внутри компании — могут рассмотреть Nstproxy Crawl как отдельный вариант; смотрите его документацию API для структуры запроса/ответа. Это не основная рекомендация для подхода DIY в этом руководстве, но он решает ту же проблему "надежной загрузки без необходимости разрабатывать инфраструктуру самостоятельно" для более крупных конвейеров извлечения в общем, на любой публичной странице, не только на LinkedIn.
Сохраняйте надежность поиска публичных профилей
Направляйте случайные запросы к публичным данным низкого объема через реальные жилые IP по более чем 200 регионам, чтобы повторы и пагинация не останавливались на адресах в центрах обработки данных с пометкой.
Python 3.9 или новее установлен и находится в системном PATH.
Список конкретных, индивидуальных публичных URL профилей для проверки — этот процесс разработан для целевых запросов, а не для открытого обхода базы членов LinkedIn.
Прокси или план ротации IP, если объем запросов превышает несколько ручных проверок, поскольку всплеск запросов с одного IP — это шаблон, который, скорее всего, приведет к ограничению доступа — смотрите как использовать прокси с BeautifulSoup для более подробного изучения подключения ротации прокси в этот конкретный стек парсинга.
Осознание того, что код ниже не был протестирован в реальном времени с реальным профилем LinkedIn при любом объеме для этой статьи. Обнаружение ботов LinkedIn и условия обслуживания делают такие испытания ненадежными и неэтичными для выполнения только с целью генерации вывода для блог-поста — код является иллюстративным, построенным на том же структуре данных JSON-LD, который задокументирован в спецификации schema.org Person и используемым публичными поисковыми системами, и должен быть проверен на одном профиле, к которому у вас есть право доступа, перед широкой эксплуатацией.
Установите среду Python
Создайте изолированную среду и установите две библиотеки, которые необходимы для этого процесса. Playwright является необязательным и нужен только для резервного варианта, рендерящего на JavaScript, в Шаге 3.
python3 -m venv venv
source venv/bin/activate # В Windows: venv\Scripts\activatepip install requests beautifulsoup4 playwright
python -m playwright install chromium # нужно только для Шага 3
Статус проверки: только конфигурация — стандартный синтаксис pip/venv, не требующий специфики для LinkedIn.
Шаг 1: Получите публичную страницу профиля
Отправьте единичный GET запрос к публичному URL профиля с реалистичным заголовком User-Agent браузера. Не пытайтесь войти в систему или прикрепить любой сеансовый файл cookie — этот шаг работает только на версии страницы, доступной в состоянии выхода.
import requests
PROFILE_URL ="https://www.linkedin.com/in/example-public-profile"headers ={"User-Agent":("Mozilla/5.0 (Windows NT 10.0; Win64; x64) ""AppleWebKit/537.36 (KHTML, like Gecko) ""Chrome/128.0.0.0 Safari/537.36"),"Accept-Language":"en-US,en;q=0.9",}# Пройдите через резидентный прокси для всего, что превышает одну ручную проверку.proxies ={"http":"http://USERNAME:PASSWORD@gate.nstproxy.com:PORT","https":"http://USERNAME:PASSWORD@gate.nstproxy.com:PORT",}response = requests.get(PROFILE_URL, headers=headers, proxies=proxies, timeout=15)response.raise_for_status()html = response.text
Статус проверки: иллюстративный — API requests, показанный (requests.get, headers, proxies, timeout, raise_for_status), соответствует текущей официальной документации requests, но этот фрагмент не был выполнен по живому URL LinkedIn для этой статьи; смотрите Предварительные требования.
Шаг 2: Проанализируйте встроенные структурированные данные
Публичные профили LinkedIn, как и большинство страниц, созданных для индексирования поисковыми системами, включают блок <script type="application/ld+json">, описывающий человека с использованием словаря Person schema.org. Парсинг этого блока более стабилен при изменениях разметки, чем цель визуальные классы CSS.
import json
from bs4 import BeautifulSoup
soup = BeautifulSoup(html,"html.parser")profile_data ={}for script_tag in soup.find_all("script",type="application/ld+json"):try: payload = json.loads(script_tag.string or"{}")except json.JSONDecodeError:continueif payload.get("@type")=="Person": profile_data ={"name": payload.get("name"),"headline": payload.get("description"),"location":(payload.get("address")or{}).get("addressLocality"),"current_role":(payload.get("worksFor")or{}).get("name"),}перерыв
print(profile_data)# Пример иллюстративного вывода:# {'name': 'Jordan Example', 'headline': 'Senior Data Analyst at Example Corp',# 'location': 'Austin, Texas', 'current_role': 'Example Corp'}
Статус проверки: иллюстративно — названия полей схемы Person соответствуют спецификации schema.org и общему шаблону, задокументированному в текущих ссылках на извлечение данных из LinkedIn, рассмотренных для этой статьи; примеры значений являются заполнительными, не извлечены из реального профиля.
Шаг 3: Обработка разделов, отрисованных на JavaScript с помощью Playwright
Некоторые разделы публичного профиля (старые посты, некоторые панели деталей) загружаются после первоначального HTML-ответа с помощью клиентского JavaScript. Когда блок JSON-LD не содержит необходимого вам поля, отрисуйте страницу с помощью безголового браузера вместо того, чтобы добавлять больше заголовков запросов к обычному HTTP-клиенту — см. извлечение данных с веб-сайтов, отрисованных на JavaScript для более широкого рассмотрения, когда этот шаг необходим, а когда — по желанию.
Статус проверки: иллюстративно — sync_playwright, chromium.launch, page.goto и page.content соответствуют текущей официальной документации Python API Playwright; сессия с живым браузером не проводилась на LinkedIn для этой статьи, в соответствии с раскрытым пробелом предпосылок.
Схема вывода
Нормализуйте любые поля, которые вы извлекаете, в одну согласованную форму записи перед сохранением чего-либо, чтобы код ниже по потоку не должен был ветвиться по тому, какой шаг произвел данное поле.
Поле
Тип
Источник
Примечания
name
строка
JSON-LD Person.name
Только публичное имя для отображения
headline
строка
JSON-LD Person.description
Однострочный заголовок, отображаемый под именем
location
строка
JSON-LD Person.address.addressLocality
Общий город/регион, не точный адрес
current_role
строка
JSON-LD Person.worksFor.name
Имя текущего работодателя, если оно публично указано
profile_url
строка
Запрашиваемый URL
Сохраните для устранения дубликатов и аудиторского следа
fetched_at
временная метка ISO 8601
Установлена во время запроса
Необходима для обеспечения политики хранения/истечения
Не добавляйте поля, которые существуют только за стеной входа — если поле отсутствует в HTML без входа или в блоке JSON-LD, оно не является частью этого рабочего процесса публичных данных.
Наблюдения и ограничения
Блок JSON-LD не содержит каждого поля, которое показывается в представлении с входом. Полные списки трудовой истории, подтверждения навыков и рекомендации, как правило, неполные или отсутствуют на публичной, безвходной странице.
Доступность разметки и полей JSON-LD может измениться без уведомления. Рассматривайте каждое извлечение полей как нечто, что следует периодически перепроверять, а не как постоянный контракт.
Единственный заблокированный IP или необычно быстрый шаблон запросов могут вызвать временную блокировку этого IP, независимо от того, нацеливался ли запрос на публичные или частные данные — это ограничение надежности, с которым следует планировать, а не контроль безопасности, который следует обойти.
Этот рабочий процесс не возвращает связи, сообщения или любое поле только для аутентификации, по замыслу — расширение его для этого потребует входа в систему, что выносит деятельность за рамки, которые охватывает эта статья, и за рамки разрешенного использования LinkedIn.
Массовый, неограниченный сбор имен и названий представляет собой отдельный риск от самого метода извлечения данных. Даже правильно извлеченные публичные данные могут создать риски GDPR/CCPA, как только они агрегированы в поисковую базу данных идентифицируемых людей.
Заключение
Сбор данных профилей пользователей LinkedIn, доступных в открытом доступе, технически прост: получить страницу без входа в систему, разобрать её структурированные данные о Person и управлять объемом запросов так, как это делает любой ответственный сборщик данных. Более сложная часть — это оставаться в рамках, которые фактически устанавливают условия LinkedIn и текущее законодательство — только публичные поля, никакого обхода входа, и наличие документированного законного основания, прежде чем эти данные станут хранящимся, поисковым набором данных реальных людей. Создайте техническую составляющую из вышеперечисленных шагов — а для структурирования этого в более крупную, поддерживаемую кодовую базу, а не в одноразовый скрипт, смотрите как построить проект веб-сканирования на Python в полномpipeline — и рассматривайте аспект соблюдения как ворота, через которые проект проходит прежде, чем он масштабируется, а не как после мысли, прикрепленной, когда сборщик уже работает.
Сбор данных, которые видны без входа в систему, сам по себе не нарушает федеральный Закон о мошенничестве и злоупотреблении в области компьютерной техники, в соответствии с решениями Девятого окружного суда в деле hiQ Labs против LinkedIn, но он нарушает Пользовательское соглашение LinkedIn, и LinkedIn отдельно выиграл дело о нарушении контракта против hiQ в том же судебном разбирательстве. Рассматривайте "не нарушение CFAA" и "разрешено условиями LinkedIn" как два разных вопроса с двумя разными ответами.
В: Нужно ли мне входить в систему, чтобы запустить код этого руководства?
Нет — каждый шаг в этом руководстве работает на странице, которую LinkedIn предлагает посетителю без входа в систему, и ни один из кодов не прикрепляет сессионный куки или учетные данные. Вход в систему для скрапинга дополнительных полей выходит за рамки того, что охватывает это руководство и за пределы разрешенного использования LinkedIn.
В: Могу ли я собирать связи или сообщения таким образом?
Нет. Связи, сообщения и большинство детализированных разделов профиля показываются только аутентифицированным зрителям и не присутствуют в HTML без входа в систему или его блоке JSON-LD, поэтому этот рабочий процесс не может и не получает их.
В: Заблокирует ли LinkedIn мой IP, если я запущу это в большом объеме?
Запуск множества запросов быстро с одного IP — это наиболее вероятный сценарий, который может вызвать временную блокировку, независимо от того, являются ли запрашиваемые данные публичными. Распределение запросов по времени и ротация через пул домашних IP снижает этот риск как вопрос схемы трафика, а не как способ обхода любых средств контроля доступа.
В: Насколько стабильна извлечение поля JSON-LD на Шаге 2?
LinkedIn может изменять разметку страницы и поля структурированных данных без предупреждения, поэтому рассматривайте каждое сопоставление поля как что-то, что необходимо периодически перепроверять, а не как постоянную схему, и ожидайте обновления логики разбора, когда поле исчезает.
В: Применяется ли GDPR или CCPA к собранным данным LinkedIn?
Да, в момент, когда собранная запись идентифицирует реального, живого человека, стандартные правила защиты данных применяются так же, как и к личным данным, собранным любым другим способом, включая наличие законного основания для их хранения и определённый срок хранения.
В: Является ли официальный API LinkedIn лучшим вариантом, чем скрапинг?
Для большинства случаев использования, да, где доступ доступен — официальные API LinkedIn строго отобраны для одобренных партнеров для большинства типов данных, поэтому многие команды вне этой партнерской программы вынуждены выбирать между скрапингом только публичной поверхности (размах этого руководства) или не собирая данные вообще; нет общего публичного API, который возвращает полные данные профиля произвольным разработчикам.
В: Что мне делать перед тем, как скрапить в коммерческих масштабах?
Пусть юридические специалисты просматривают конкретные данные, которые собираются, юрисдикции вовлеченных лиц и предполагаемое использование, поскольку риск нарушения контракта, продемонстрированный в деле hiQ, существует независимо от того, что разрешает CFAA, а GDPR/CCPA добавляют свои собственные отдельные требования, как только набор данных становится достаточным, чтобы быть действительной поверхностью соблюдения.
Топ-5 альтернатив Zyte для веб-скрэпинга в 2026 году
Сравните пять практических альтернатив Zyte для веб-скрапинга в 2026 году, включая модели ценообразования, форматы вывода и честные ограничения для каждого инструмента.
Ivy Lin
Sep. 7th 2026
110M+ реальных IP с 99.9% успешных доступов
Средний отклик ~0.5с для задач высокой конкуренции
Всего от $0.1/GB
Мгновенный доступ к премиальным residential, datacenter, IPv6 и ISP пулам.