0x00
En web crawler (også kendt som en web spider, web bot, mere almindeligt kaldet en web chaser i FOAF-miljøet) er et program eller script, der automatisk skraber information om World Wide Web i henhold til bestemte regler. Andre mindre almindeligt anvendte navne inkluderer myrer, auto-indekser, simulatorer eller orme.
0x01
For at sige det enkelt, henter crawlere data efter deres egne regler, analyserer de indsamlede data og får derefter brugbare data til sig selv.
0x02
Webcrawleroptimering kan opdeles i to faser:
1: Optimer ved indsamling af data;
2: Optimere behandlingen af griberesultater;
I dag taler vi bare om optimering i scraping-processen!
0x03
Jeg har opsummeret et par punkter om optimeringen i crawling-processen:
1: Det kan optimeres på den fysiske adresse, for eksempel: målressourceserveren er Tencent Cloud-værten i Shanghai, vi prøver at vælge serveren i samme region, altså serveren i Shanghai-regionen, vi vælger ikke serveren i Beijing, Qingdao og andre regioner, men prøver også at vælge serveren i samme IDC-computerrum, vi ved, at denne ressourcehjemmeside er serveren for Tencent Cloud, vi prøver at placere crawleren på Tencent Cloud-serveren, ikke på Alibaba Cloud-serveren!
2: Vælg et stabilt og hurtigt netværk, generelt har robotter høje krav til netværkskvalitet, prøv ikke at bruge hjemmenetværket, vælg firmanetværket eller køb en server til at indsamle data.
3: Vælg et mere effektivt crawler-sprog, jeg har hørt, at python er bedre til crawlere, men jeg har ikke brugt det, og jeg vil teste det senere, i dag forklarer jeg det primært på .net-sproget.
0x04
For ting som rush buy er kravene for at opnå hurtig adgang høje, det kan beskrives som et spørgsmål om tid, tidligt at få dataene, hvilket øger chancen for at få fat i det, følgende er: Jeg skrev en demo med konsollen, testen i at hente dataene fra denne hjemmeside, som vist i figuren nedenfor:
(Jo kortere tiden, jo hurtigere går det)
Ovenstående datarangering:1: Optimeret kode, 2: Native kode, 3: Tredjeparts plug-in dll'er (pakker)
0x05
Hvorfor tager tredjeparts plugins (pakker) længst tid? Tredjeparts plug-ins består faktisk af et stort antal indkapslinger af native kode, et stort antal logiske vurderinger og relativt alsidige, hvilket kan føre til langsom crawling-hastighed.
Her er den oprindelige kode:
Den oprindelige kode er kun få linjer ovenfor.Gennemsnitstiden er stadig 184 millisekunder,Jo simplere koden er, desto sværere er det at optimereFøler du, hvordan ovenstående kode kan optimeres til at opnå en gennemsnitlig tid på 99 millisekunder?Hastighedsforskellen fordobles!
0x06
Hvis målressourceserveren understøtter gzip-komprimering, vil anmodningsheaderen have følgende parametre, når vi tilgår hjemmesiden og browseren anmoder om hjemmesiden:
Respons-headerparametre:
Introduktion til "Accept-Kodning": https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding
På almindelige måder:
Kunden siger:Jeg støtter komprimeringsalgoritmen "gzip, deflate, sdch, br", du kan bruge hvad som helst, når du returnerer data.
Serveren sagde:Jeg understøtter tilfældigvis gzip-komprimeringsalgoritmen, så jeg vil bruge gzip-algoritmen til at komprimere dataene til dig
Kunden siger:Okay, så dekrypterer jeg de modtagne data med gzip-algoritmen
gzip-algoritmen, som kan komprimere de transmitterede data og kraftigt reducere det transmitterede indhold, så anmodningseffektiviteten vil blive forbedret, og den optimerede kode er som følger:
Selvom det er en lille detalje, kan effektiviteten siges at være fordoblet! Det svarer til de data, du indsamlede på to dage, og nu kan det indsamles på 1 dag, og denne artikel er dedikeret til venner, der lærer at crawle.
Bemærk: Gzip-komprimeringsalgoritmen har intet med programmeringssproget at gøre!
Endelig vedhæft kildekoden:
Turister, hvis I vil se det skjulte indhold i dette indlæg, så vær venlig Svar
|