Как я собрал более 100 000 постов на Linkedin
Table Of Content
- Как спарсить Linkedin?
- Начал скрапить Linkedin с помощью Puppeteer
- Linkedin требует входа в систему для скрапинга постов пользователей
- Linkedin заблокировал аккаунт парсера
- Применение случайных кликов и случайных задержек
- Сценарий Puppeteer случайным образом выполняет клики и перенаправляется на другую страницу
Мне нужно проанализировать некоторые посты на 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
Купите мне кофе, если вам понравился контент.