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 алгоритъм, който може да компресира предоставените данни и значително да намали предаваното съдържание, така че ефективността на заявката ще се подобри, така че оптимизираният код е следният:
Въпреки че е малък детайл, ефективността може да се каже, че е удвоена! Това е еквивалентно на данните, които сте събрали за два дни, а сега могат да бъдат събрани за 1 ден, а тази статия е посветена на приятели, които учат да обхождат.
Забележка: Алгоритъмът за компресия на gzip няма нищо общо с езика за програмиране!
Накрая, прикачете изходния код:
Туристи, ако искате да видите скритото съдържание на този пост, моля Отговор
|