Инженер-рептилия уговаривает уйти

задняя часть сервер рептилия Selenium

Предисловие: у этой статьи нет исходного кода, давайте поговорим о молодежи, которая в конечном итоге уйдет из жизни инженера-краулера.

В этот момент я сижу за своей рабочей станцией, смотрю на код сканера веб-сайта передо мной и погружаюсь в воспоминания.

источник

«Вы пишете о сканере XX.net, в основном для сканирования личной информации. Сколько времени это займет у вас?» «4 или 5 дней», я когда-то писал краулеры Zhihu за 2 или 3 дня, оставляя себе достаточно времени для рыбалки. — Хорошо, я даю тебе неделю. "В ПОРЯДКЕ"

Это первый проект, который я получил с тех пор, как пришел в эту компанию с нулевым опытом работы, пишу краулер с нуля.

Это не добавление функциональности к поисковой системе и не заполнение дыр в исходном коде.

Я дал себе 4 или 5 дней.

А потом на этой дороге невозврата...

Рождение ползучего (фей) насекомого (булавка)

Незаменим для программистовнавыки поиска, я быстро нашел аналогичный код сканера на github.

Модифицировать и модифицировать, я потратил всего 2 дня на то, чтобы написать краулер,почтовый запрос, асинхронная загрузка ajax, регулярное сопоставление, jsonЧто, даже оптимизировал исходный авторский код.

В то же время автор писал этот код давно, и правила получения некоторой информации на сайте другие. Благодаря особой стратегии сайта я узналОпределить исходный код веб-страницыМаскарадинг находит целевую информацию, дважды передавая значение. (Сначала найдите переданное значение, а затем сопоставьте целевую информацию, передав значение)

Итак, вскоре мой краулер радостно заработал.

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

первое препятствие

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

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

В это время я научился использоватьimaplibЭлектронная почта для входа в модуль для получения проверочного кода.

Сервер развертывания

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

Хром браузера Selenium не способствует работе на сервере, поэтому я научился комбинировать селен с безголовым браузеромphantomjsиспользовать.

Сервер только что открылся, а окружение еще нужно настроить, так что я еще раз выучилОсновные операции по настройке сервера.

Функциональное разделение

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

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

Так что я снова изменил стратегию использования аккаунтов, несколько аккаунтов, лазил по очереди, и менял раз в несколько раз.

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

Код используется для обновления файла cookie для учетной записи, и код напрямую извлекает файл cookie, а доступная информация о файлах cookie сохраняется в mysql (это может быть новичок). . . . .

И такое функциональное разделение, у него высокоуровневое имя,Модель производитель-потребитель.

Многопоточность

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

Еще раз, функции разделены, а извлекаемый URL-адрес помещается в библиотеку Redis, а функция pop используется непосредственно в программе-краулер для получения URL-адреса, который удаляется сразу после извлечения, и повторения не будет. добыча.redisОчень хорошая база данных с точки зрения кэширования.

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

Наконец

Некоторые люди подумают, разве это не процесс проекта?

Почему название этой статьи - статья-увещевание инженера-рептилии?

Потому что мой аккаунт все еще заблокирован. . . . .

Так что я взял на себя проект зарегистрированного аккаунта моего коллеги. . . . .

Я потратил много денег, чтобы купить IP и номер мобильного телефона для кода подтверждения. . . . .

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

.

.

.

.

.

Выяснилось, что на сайте изменилась политика регистрации. . . . . . .

Вывод: Видите ли, после того, как я получил столько знаний, я все еще не могу жить жизнью этого инженера-рептилии. Все, пожалуйста, не спрашивайте меня в частном порядке, какие навыки мне нужны, чтобы стать инженером-рептилией! Спешите и бегите! (Стучите по доске! Отметьте ключевые моменты!)