0x00
Паутиновый краунер (также известный как паутиновый бот, паутинный бот, более часто называемый паутиной в сообществе FOAF) — это программа или скрипт, который автоматически собирает информацию о Всемирной паутине согласно определённым правилам. Другие менее часто используемые названия включают муравьёв, автоиндексы, симуляторы или червей.
0x01
Проще говоря, краулеры собирают данные по своим правилам, анализируют собранные данные и затем получают полезные данные для себя.
0x02
Оптимизация веб-краулеров может быть разделена на два этапа:
1: Оптимизировать при скрапинге данных;
2: Оптимизировать обработку результатов захвата;
Сегодня мы говорим только об оптимизации процесса скрапинга!
0x03
Я кратко изложил несколько моментов об оптимизации в процессе сканирования:
1: Его можно оптимизировать по физическому адресу, например: целевым ресурсным сервером является хост Tencent Cloud в Шанхае, мы пытаемся выбрать сервер в том же регионе, то есть сервер в регионе Шанхая, не выбираем сервер в Пекине, Циндао и других регионах, но также пытаемся выбрать сервер в той же компьютерной комнате IDC, мы знаем, что этот ресурсный сайт — сервер Tencent Cloud, мы стараемся разместить краулер на сервере Tencent Cloud, а не на сервере Alibaba Cloud!
2: Выбирайте стабильную и быструю сеть, обычно краулеры требуют высокие требования к качеству сети, старайтесь не использовать домашнюю сеть, выбирайте корпоративную сеть или покупайте сервер для сбора данных.
3: Выберите более эффективный язык краулера, я слышал, что python лучше работает с краулерами, но я им не пользовался, и позже протестирую, сегодня я в основном объясняю это на языке .net.
0x04
Для таких вещей, как спешная покупка, требования к скорости захвата высоки, это можно описать как вопрос времени, рано получить данные, повысить вероятность захвата, ниже я написал демонстрацию с консолью, тест на получение данных с этого сайта, как показано на рисунке ниже:
(Чем короче время, тем быстрее)
Приведённые выше рейтинги данных:1: Нативно оптимизированный код, 2: Нативный код, 3: Сторонние плагины DLL (пакеты)
0x05
Почему сторонние плагины (пакеты) занимают больше всего времени? Сторонние плагины — это на самом деле большое количество инкапсуляций родного кода, большое количество логических суждений и относительно универсальность, что может приводить к медленной скорости ползания.
Вот родной код:
Родной код находится всего на несколько строк сверху.Среднее время всё равно составляет 184 миллисекунды,Чем проще код, тем сложнее его оптимизироватьСчитаете ли вы, как можно оптимизировать вышеуказанный код для достижения среднего времени 99 миллисекунд?Разница в скорости удвоена!
0x06
Если целевой сервер ресурсов поддерживает сжатие gzip, когда мы заходим на сайт и браузер запрашивает его, заголовок запроса будет иметь следующие параметры:
Параметры заголовка ответа:
Введение в «Accept-Encoding»: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding
Простыми словами:
Клиент говорит:Я поддерживаю алгоритм сжатия «gzip, deflate, sdch, br», вы можете использовать что угодно при возврате данных.
Сервер сказал:Я поддерживаю алгоритм сжатия gzip, поэтому буду использовать алгоритм gzip для сжатия данных до вас
Клиент говорит:Хорошо, тогда я расшифрую полученные данные с помощью алгоритма gzip
алгоритм gzip, который может сжимать передаваемые данные и значительно уменьшать их содержание, что повышает эффективность запроса, поэтому оптимизированный код выглядит следующим образом:
Хотя это небольшая деталь, можно сказать, что эффективность удвоена! Это эквивалентно данным, собранным за два дня, а теперь их можно собрать за один день, и эта статья посвящена друзьям, которые изучают скраулирование.
Примечание: алгоритм сжатия gzip никак не связан с языком программирования!
Наконец, приложите исходный код:
Туристы, если вы хотите увидеть скрытое содержание этого поста, пожалуйста Ответ
|