0x00
Un web crawler (cunoscut și sub denumirea de web spider, web bot, mai frecvent numit web chaser în comunitatea FOAF) este un program sau un script care extrage automat informații despre World Wide Web conform anumitor reguli. Alte denumiri mai puțin folosite includ furnici, auto-indexuri, simulatoare sau viermi.
0x01
Pe scurt, crawlerii colectează date conform propriilor reguli, analizează datele capturate și apoi obțin date utile pentru ei înșiși.
0x02
Optimizarea pentru crawler web poate fi împărțită în două etape:
1: Optimizare la extragerea datelor;
2: Optimizarea procesării rezultatelor de captare;
Astăzi, vorbim doar despre optimizare în procesul de scraping!
0x03
Am rezumat câteva puncte despre optimizarea în procesul de crawling:
1: Poate fi optimizat pe adresa fizică, de exemplu: serverul de resurse țintă este gazda Tencent Cloud din Shanghai, încercăm să alegem serverul din aceeași regiune, adică serverul din regiunea Shanghai, nu alegem serverul din Beijing, Qingdao și alte regiuni, ci încercăm să alegem serverul din aceeași cameră de calculatoare IDC, știm că acest site de resurse este serverul Tencent Cloud, încercăm să punem crawlerul pe serverul Tencent Cloud, nu pe serverul Alibaba Cloud!
2: Alege o rețea stabilă și rapidă, în general crawlerele au cerințe ridicate pentru calitatea rețelei, încearcă să nu folosești rețeaua de acasă, alege rețeaua companiei sau cumpără un server pentru a captura date.
3: Alege un limbaj de crawler mai eficient, am auzit că python este mai bun la crawlere, dar nu l-am folosit și îl voi testa mai târziu, astăzi îl explic în principal în limbajul .net.
0x04
Pentru lucruri precum cumpărăturile rapide, cerințele pentru viteza de captare sunt ridicate, poate fi descris ca o chestiune de timp, devreme pentru a obține datele, pentru a crește șansa de captură; următorul lucru este că am scris o demonstrație cu consola, testul de a obține datele acestui site, așa cum se vede în figura de mai jos:
(Cu cât timpul este mai scurt, cu atât este mai rapid)
Clasamentul datelor de mai sus:1: Cod optimizat nativ, 2: Cod nativ, 3: DLL-uri plug-in terțe (pachete)
0x05
De ce durează cel mai mult pluginurile (pachetele) terțe? Plug-in-urile terțe sunt de fapt un număr mare de încapsulări ale codului nativ, un număr mare de judecăți logice și sunt relativ versatile, ceea ce poate duce la o viteză lentă de crawling.
Iată codul nativ:
Codul nativ este la doar câteva rânduri mai sus.Timpul mediu este încă de 184 de milisecunde,Cu cât codul este mai simplu, cu atât este mai greu de optimizatCrezi că cum poate fi optimizat codul de mai sus pentru a atinge un timp mediu de 99 de milisecunde?Diferența de viteză s-a dublat!
0x06
Dacă serverul de resurse țintă suportă compresia gzip, când accesăm site-ul și browserul solicită site-ul, antetul cererii va avea următorii parametri:
Parametrii antetului de răspuns:
Introducere în "Accept-Encoding": https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding
În termeni simpli:
Clientul spune:Susțin algoritmul de compresie "gzip, flate, sdch, br", poți folosi orice vrei când returnezi date.
Chelnerul a spus:Eu suport algoritmul de compresie gzip, așa că voi folosi algoritmul gzip pentru a comprima datele către tine
Clientul spune:Bine, atunci voi decripta datele primite cu algoritmul gzip
Algoritmul GZIP, care poate comprima datele transmise și reduce semnificativ conținutul transmis, astfel încât eficiența cererilor va fi îmbunătățită, astfel încât codul optimizat este următorul:
Deși este un detaliu mic, eficiența poate fi considerată dublată! Este echivalent cu datele colectate în două zile, iar acum pot fi colectate în 1 zi, iar acest articol este dedicat prietenilor care învață crawling.
Notă: Algoritmul de compresie gzip nu are nicio legătură cu limbajul de programare!
În final, atașează codul sursă:
Turiști, dacă vreți să vedeți conținutul ascuns al acestei postări, vă rog Răspunde
|