Проект состоит из двух модулей:
- Парсинг прокси
- Парсинг facebook
Парсинг прокси (scrap_proxy.py):
- Прокси достаются с https://free-proxy-list.net/
- Проверяются на статус ALIVE (живое ли прокси)
- Проверка всех прокси происходит в разных потоках для ускорения отправки множества запросов
- Ссылки со статусом ALIVE заносятся в БД SQLite
-
- Время работы алгоритма для 300 прокси в 30 потоках - около 1.5 мин
Парсинг facebook (main.py):
- Из БД берутся прокси и происходит попытка открыть страницу авторизации facebook
- Если после создания драйвера, он содержит валидный HTML запрашиваемой страницы, то алгоритм продолжается
- Происходит авторизация с заполнением нужных полей (заполняю данными своего аккаунта)
- После успешной авторизации происходит переход на целевую URL
- На целевой URL осуществляется скролинг страницы вниз и парсинг данных
- Данные сохраняются в БД
Чего получилось достигнуть:
- Собирать живые прокси и сохранять их в БД
- В режиме headless_mode=False получилось осуществить парсинг юзеров целевой группы (браузер при этом открывается)
- Сохранять полученные данные в БД
Что не получилось:
- Не высокая стабильность
- Не получилось спарсить данные в теневом режиме (без открытия браузера): алгоритм умирает на этапе получения данных со старицы группы
Что можно улучшить:
- Вероятно нужно как-то изменить конфигурацию драйвера, чтобы headless_mode=True получилось парсить данные
- Создавать отдельную таблицу с прокси, с помощью которых удался парсинг
- Написать алгоритмы, которые бы обходили всплывающие окна и когда надо нажимали "ОК"
- В будущем попробовать работать с API вместо простого скрабинга
Заметки:
- В качестве юзер агента использовал данные со своего ПК, где я авторизовывался ранее
- Регистрация проходит только с ссылки: "https://m.facebook.com/login.php?refsrc=https%3A%2F%2Fm.facebook.com%2F&refid=8"
- Проверку на валидациию хромом драйвера проверял с помощью сервиса:https://intoli.com/blog/not-possible-to-block-chrome-headless/chrome-headless-test.html
- Пришлось убрать следующие настройки конфигурации:
- chrome_options.add_argument('--no-sandbox')
- chrome_options.add_argument('--disable-dev-shm-usage')
- При переходе на страницу с группой перед скроллингом требовалось сымитировать нажатие курсора (иначе страница блёклая и НЕ активная)
- По дефолту скролю минуту, не до конца