CoderCastrov logo
CoderCastrov
Парсер веб-страниц

Как я собрал более 100 000 постов на Linkedin

Как я собрал более 100 000 постов на Linkedin
просмотров
4 мин чтение
#Парсер веб-страниц

Мне нужно проанализировать некоторые посты на Linkedin, и я решил собрать вирусные посты с Linkedin. Это история о парсинге Linkedin как профессионал.

Как я сказал в описании, мне нужно найти некоторые публичные данные о постах на Linkedin, и когда я искал информацию, я не смог найти ее. Я решил спарсить публичные посты, и история началась.

Как спарсить Linkedin?

Первый вопрос вот этот. Есть разные способы сделать это. В целом, я просто хочу сделать эти действия, как настоящий пользователь, чтобы это защитило меня от политики запрета, ограничений и т.д. со стороны Linkedin. Поэтому я решил использовать безголовый браузер для выполнения этой операции.

С другой стороны, когда я искал информацию, некоторые ребята просто копируют API-запросы и извлекают данные из них. Но я могу легко сказать, что это плохой способ для парсинга Linkedin, потому что вы очень быстро получите запрет.

После этого мне нужно было решить, какой инструмент, фреймворк и язык программирования использовать. В моем предыдущем опыте я использовал GO Colly и получил очень хорошие результаты при парсинге Amazon. Но на этот раз я хочу выполнить эти операции, написав код на JavaScript, и я решил использовать Puppeteer**. **Есть альтернативы Puppe, но я знаю, как использовать Puppeteer, и это повлияло на мое решение.


Начал скрапить Linkedin с помощью Puppeteer

После принятия решения, я быстро установил Chromium и Puppeteer на свой компьютер. (Технические части кода я не буду описывать в этой статье).

Моя основная цель была найти вирусные посты и также найти вирусные посты внутри хэштегов. Таким образом, я смогу легко анализировать посты.

Я создал список популярных пользователей на LinkedIn. Вы можете просто найти его через Google, там есть много списков на эту тему.

Когда я попытался скрапить пользователей и их посты, первая проблема возникла :)

Linkedin требует входа в систему для скрапинга постов пользователей

Решение было простым. Мне нужно было войти в систему и затем установить куки в мой скрипт Puppeteer. Я сделал это.

Также я написал скрипт для входа в систему, чтобы можно было автоматически войти.

Затем я начал получать содержимое постов, лайки, репосты и т.д.

Через 2 часа я понял, что делаю ошибку :( Посты имеют кнопку "показать все", и мои собранные данные в основном содержат меньше контента.

Затем я улучшил свой скрипт и рекурсивно начал нажимать необходимые кнопки, чтобы получить полное содержимое.

После этого я очистил таблицу и начал скрапить снова. В этой части мне нужно было найти решение для таких ошибок и также обновлений, потому что каждый раз я не мог скрапить данные с нуля.

Так что я нашел решение (я не хочу делиться этой частью, потому что я все еще использую :D) Я нашел URL о постах и напрямую перехожу с уникальным идентификатором и легко скраплю посты и получаю обновления.

Вторая и самая большая проблема была в том, что моя учетная запись была заблокирована.

Linkedin заблокировал аккаунт парсера

Когда я начинал, я знал, что однажды мои аккаунты парсера будут заблокированы. Это свойственно парсингу веб-страниц, но мы здесь, чтобы найти решения для этой проблемы.

Мое первое решение заключается в том, что большинство людей делают то же самое: открывают новые аккаунты с помощью скрипта и продолжают парсить. Но в этом случае LinkedIn имеет хорошие ограничения. В процессе регистрации они отправляют подтверждение по электронной почте. Кроме того, это не большая проблема, я могу открыть почтовый ящик и просто скопировать номер подтверждения и т.д. Но LinkedIn также требует решения капчи. Это проблема для меня :)

Я знаю, что есть некоторые сервисы для решения капчи, но я не хочу платить за них деньги, и это потребует еще разработки с моей стороны.

Так что в этой части мне нужно защитить свои аккаунты парсера от блокировки.

Применение случайных кликов и случайных задержек

Основная проблема заключается в том, что я не знаю, как Linkedin решает ограничение аккаунтов. В этой части единственным решением является попытка и ошибка :)

Сначала я добавил случайные задержки перед кликами на странице. После этого я начал случайно ждать при смене страницы. Обычно это случайно (5-40 секунд).

Это немного решило мою проблему, но через некоторое время я все равно был забанен :D

Когда я пытался решить эти проблемы, возникла другая проблема.

Сценарий Puppeteer случайным образом выполняет клики и перенаправляется на другую страницу

По ошибке открывается новое окно, происходит перенаправление и клики на страницу сообщений, что нарушает мою логику парсинга.

Поэтому я провел исследование и нашел решение в Puppeteer. Если вы столкнулись с такой же проблемой, просто изучите RequestInterception.

В этой статье я закончил и в следующих статьях поделюсь другими решениями. Это длинная история, и парсинг веб-страниц не так прост :)

Атакан Демирджиоглу - разработчик Full Stack, в настоящее время работающий в Jotform, ведущей платформе для создания онлайн-форм.

Он увлечен блоггингом, обучением и творчеством. Делится своими опытами на Medium и GitHub.

Twitter: https://twitter.com/atakde

Github: https://github.com/atakde

Купите мне кофе, если вам понравился контент.