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, коли ми заходимо на сайт і браузер запитує сайт, заголовок запиту матиме такі параметри:
Параметри заголовка відповіді:
Вступ до «Прийняття-кодування»: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding
Простими словами:
Клієнт каже:Я підтримую алгоритм стиснення "gzip, deflate, sdch, br", ви можете використовувати будь-який варіант для повернення даних.
Офіціант сказав:Я підтримую алгоритм стиснення gzip, тому використаю алгоритм gzip для стиснення даних до вас
Клієнт каже:Добре, тоді я розшифрую отримані дані за допомогою алгоритму gzip
Алгоритм gzip, який може стискати передані дані та суттєво зменшувати переданий вміст, тому ефективність запитів підвищується, тому оптимізований код виглядає так:
Хоч це й дрібниця, ефективність можна сказати, що вона подвоїлася! Це еквівалентно дані, зібраним за два дні, і тепер їх можна зібрати за 1 день, і ця стаття присвячена друзям, які навчаються скраулінгу.
Примітка: алгоритм стиснення gzip не має нічого спільного з мовою програмування!
Нарешті, додайте вихідний код:
Туристи, якщо ви хочете побачити прихований контент цього допису, будь ласка Відповідь
|