1. <strong>Цель проекта</strong>
Создание парсера для LinkedIn, который будет работать через Telegram. Парсер должен собирать информацию о пользователях и компаниях с LinkedIn, включая:<br><br>
<ul>
<li>Имя пользователя</li>
<li>Ссылка на профиль пользователя</li>
<li>Название компании</li>
<li>Ссылка на профиль компании</li>
<li>Почтовые адреса (по возможности)</li><li>(пункты могут добавляться в зависимости от возможностей api)</li>
</ul>
Результаты поиска должны экспортироваться в Google Таблицы для дальнейшего использования и обработки.<br><br>
Парсинг будет осуществляться с использованием следующих библиотек:<br><br>
<ul>
<li><a href="https://github.com/tomquirk/linkedin-api">linkedin-api</a></li>
<li><a href="https://pypi.org/project/linkedin-scraper/">linkedin-scraper</a></li><li>(или других при наличии)</li>
</ul>
2. <strong>Основные функциональные требования</strong>
<ol>
<li>
<strong>Интерфейс с Telegram</strong>:<br>
<ul>
<li>Создать бота в Telegram, который будет взаимодействовать с пользователями.</li>
<li>Пользователь может отправлять запросы для поиска профилей на LinkedIn и получать результаты в виде сообщений в Telegram.</li>
<li>Результаты поиска, помимо вывода в Telegram, должны быть экспортированы в Google Таблицы.</li>
</ul>
</li>
<li>
<strong>Поиск на LinkedIn</strong>:<br>
<ul>
<li>Парсинг информации по ссылке на поиск с выставленными фильтрами</li>
<li>Реализовать поиск через <strong>LinkedIn Search</strong> и <strong>Sales Navigator</strong>.</li></ul></li>
<li>
<strong>Обработка ошибок</strong>:<br>
<ul>
<li>Обработка ошибок, возникающих при неудачном запросе, блокировке аккаунтов и других нештатных ситуациях.</li>
</ul>
</li>
<li>
<strong>Экспорт в Google Таблицы</strong>:<br>
<ul>
<li>После получения результатов поиска, парсер должен автоматически экспортировать данные в Google Таблицы.</li>
<li>Для каждого поиска создавать новый лист, с уникальным названием по имени пользователя</li>
<li>Таблица должна содержать следующие колонки:
<ul>
<li>Имя пользователя</li>
<li>Ссылка на профиль</li>
<li>Название компании</li>
<li>Ссылка на компанию</li>
<li>Почта (если доступно)</li>
</ul>
</li>
<li>Для работы с Google Таблицами необходимо использовать Google Sheets API для автоматического создания и редактирования таблиц.</li>
</ul>
</li>
</ol>
3. <strong>Функциональные особенности</strong>
<ol>
<li>
<strong>Телеграмм-бот</strong>:<br>
<ul>
<li>Бот должен принимать команды от пользователя через Telegram:
<ul>
<li><code>/start</code> — запуск бота и приветственное сообщение.</li>
<li><code>/search <поисковый запрос></code> — выполнение поиска по ключевому запросу на LinkedIn, вывод результатов в Telegram и экспорт их в Google Таблицы.</li>
<li><code>/help</code> — описание доступных команд.</li>
</ul>
</li>
<li>Каждому результату поиска должна быть дана краткая информация:
<ul>
<li>Имя пользователя.</li>
<li>Ссылка на профиль пользователя.</li>
<li>Название компании.</li>
<li>Ссылка на профиль компании.</li>
<li>Почтовый адрес (если доступно).</li>
</ul>
</li>
</ul>
</li>
<li>
<strong>Парсинг LinkedIn</strong>:<br>
<ul>
<li>Использовать <strong>linkedin-scraper</strong> для получения информации с публичных страниц пользователей и компаний (если доступны).</li>
<li>Использовать <strong>linkedin-api</strong> для получения информации о профиле пользователя, включая имя, компанию, позицию и почту (если доступна).</li>
</ul>
</li>
<li>
<strong>Получение данных</strong>:<br>
<ul>
<li>Для пользователей, чьи страницы доступны:
<ul>
<li>Имя и фамилия.</li>
<li>Профильная ссылка на LinkedIn.</li>
<li>Компания, где работает пользователь.</li>
<li>Ссылка на страницу компании.</li>
<li>Электронная почта (если публично доступна).</li></ul></li></ul></li>
<li>
<strong>Ограничения</strong>:<br>
<ul>
<li>Параллельное выполнение запросов для ускорения поиска, если возможно.</li>
<li>Для избежания блокировок необходимо добавить случайные задержки между запросами.</li>
<li>Отображение ошибки в случае блокировки пользователя или проблемы с запросом.</li>
</ul>
</li>
<li>
<strong>Данные безопасности и конфиденциальности</strong>:<br>
<ul>
<li>Соблюдать политику конфиденциальности LinkedIn и избегать парсинга данных, которые противоречат их условиям использования.</li>
<li>Защита данных пользователей (например, пароли) и соблюдение стандартов безопасности для Telegram-ботов.</li>
</ul>
</li>
</ol>
4. <strong>Технические требования</strong>
<ol>
<li>
<strong>Среда разработки</strong>:<br>
<ul>
<li>Python 3.8 или выше.</li>
<li>Использование библиотек <strong>python-telegram-bot</strong> для создания бота.</li>
<li>Использование <strong>linkedin-scraper</strong> и <strong>linkedin-api</strong> для получения данных с LinkedIn.</li>
<li>Использование <strong>Google Sheets API</strong> для автоматического экспорта данных в таблицы.</li>
</ul>
</li>
<li>
<strong>Интеграция с Telegram</strong>:<br>
<ul>
<li>Использование Telegram Bot API для создания и работы с ботом.</li>
<li>Получение сообщений от пользователей и отправка ответов.</li>
</ul>
</li>
<li>
<strong>Архитектура</strong>:<br>
<ul>
<li>Парсер должен быть многозадачным, чтобы обрабатывать несколько запросов одновременно, без блокировки аккаунта.</li>
<li>Реализовать использование баз данных или файлов для хранения временных данных (например, для отслеживания ограничений и очереди запросов).</li>
</ul>
</li>
<li>
<strong>Интеграция с Google Sheets API</strong>:<br>
<ul>
<li>Для работы с Google Таблицами необходимо использовать OAuth 2.0 для авторизации и доступа к Google Sheets API.</li>
<li>После получения результатов поиска парсер должен автоматически создать новый лист в Google Таблице, заполнить его соответствующими данными и предоставить ссылку на таблицу пользователю.</li>
</ul>
</li>
</ol>
5. <strong>Этапы разработки</strong>
<ol>
<li>
<strong>Этап 1 — Создание Telegram-бота</strong>:<br>
<ul>
<li>Настройка Telegram-бота и его интеграция с Python.</li>
<li>Разработка команд для бота (например, <code>/start</code>, <code>/search</code>, <code>/help</code>).</li>
</ul>
</li>
<li>
<strong>Этап 2 — Реализация парсера LinkedIn</strong>:<br>
<ul>
<li>Настройка и тестирование библиотек <strong>linkedin-api</strong> и <strong>linkedin-scraper</strong>.</li>
<li>Реализация логики поиска и извлечения данных из LinkedIn.</li>
<li>Обработка информации о пользователях и компаниях.</li>
</ul>
</li>
<li>
<strong>Этап 3 — Интеграция с Telegram-ботом</strong>:<br>
<ul>
<li>Интеграция парсера с Telegram-ботом для отправки результатов поиска.</li>
<li>Обработка команд и вывод результатов пользователю.</li>
<li>Интеграция с Google Sheets API для автоматического экспорта данных.</li>
</ul>
</li>
<li>
<strong>Этап 4 — Тестирование</strong>:<br>
<ul>
<li>Проведение тестирования бота на различных данных и исправление ошибок.</li>
<li>Проверка работы бота в условиях ограничений и капч.</li>
</ul>
</li>
<li>
<strong>Этап 5 — Развертывание и поддержка</strong>:<br>
<ul>
<li>Развертывание бота на сервере или в облаке.</li>
<li>Обеспечение стабильной работы и мониторинг.</li>
</ul>
</li>
</ol>
6. <strong>Дополнительные требования</strong>
<ul>
<li>Возможность доработки бота с добавлением новых функций.</li>
<li>Оптимизация скорости работы бота и парсера для эффективного получения данных.</li>
<li>Предоставление отчётов о работе бота в случае возникновения ошибок или блокировок.</li>
</ul>
7. <strong>Ожидаемые результаты</strong>
<ul>
<li>Рабочий Telegram-бот, который позволяет искать информацию на LinkedIn и экспортировать данные в Google Таблицы.</li>
<li>Результаты поиска, включающие имя пользователя, ссылку на профиль, компанию, ссылку на компанию и почту (если доступно), экспортируются в таблицу.</li></ul>