0x00
En web crawler (også kjent som en web spider, web bot, oftere kalt en web chaser i FOAF-miljøet) er et program eller skript som automatisk skraper informasjon om World Wide Web i henhold til visse regler. Andre mindre brukte navn inkluderer maur, autoindekser, simulatorer eller.
0x01
For å si det enkelt, henter crawlere data etter sine egne regler, analyserer de innsamlede dataene, og skaffer deretter nyttige data til seg selv.
0x02
Optimalisering av webcrawlere kan deles inn i to trinn:
1: Optimalisere når du skraper data;
2: Optimalisere behandlingen av griperesultater;
I dag snakker vi bare om optimalisering i skrapeprosessen!
0x03
Jeg har oppsummert noen punkter om optimaliseringen i crawling-prosessen:
1: Det kan optimaliseres på den fysiske adressen, for eksempel: målressursserveren er Tencent Cloud-verten i Shanghai, vi prøver å velge serveren i samme region, altså serveren i Shanghai-regionen, vi velger ikke serveren i Beijing, Qingdao og andre regioner, men prøver også å velge serveren i samme IDC-datarom, vi vet at denne ressursnettsiden er serveren til Tencent Cloud, vi prøver å legge crawleren på Tencent Cloud-serveren, ikke på Alibaba Cloud-serveren!
2: Velg et stabilt og raskt nettverk, generelt har crawlere høye krav til nettverkskvalitet, prøv å ikke bruke hjemmenettverket, velg firmanettverket eller kjøp en server for å fange data.
3: Velg et mer effektivt crawler-språk, jeg har hørt at python er bedre på crawlere, men jeg har ikke brukt det, og jeg skal teste det senere, i dag forklarer jeg det hovedsakelig på .net-språket.
0x04
For ting som rush-kjøp er kravene for nedlastingshastighet høye, det kan beskrives som et tidsspørsmål, tidlig å få dataene, øke sjansen for å få tak i det, følgende er Jeg skrev en demo med konsollen, testen for å hente dataene fra dette nettstedet, som vist i figuren nedenfor:
(Jo kortere tid, jo raskere går det)
Rangeringen av dataene ovenfor:1: Naturlig optimalisert kode, 2: Native kode, 3: Tredjeparts plug-in dll-er (pakker)
0x05
Hvorfor tar tredjeparts plugins (pakker) lengst tid? Tredjeparts-plugins er faktisk et stort antall innkapslinger av native kode, et stort antall logiske vurderinger og relativt allsidige, noe som kan føre til langsom krypehastighet.
Her er den opprinnelige koden:
Den opprinnelige koden er bare noen få linjer over.Gjennomsnittstiden er fortsatt 184 millisekunder,Jo enklere koden er, desto vanskeligere er det å optimalisereFøler du hvordan koden ovenfor kan optimaliseres for å oppnå en gjennomsnittlig tid på 99 millisekunder?Fartsforskjellen er doblet!
0x06
Hvis målressursserveren støtter gzip-komprimering, vil forespørselsheaderen ha følgende parametere når vi får tilgang til nettstedet og nettleseren ber om nettstedet:
Responsheader-parametere:
Introduksjon til "Accept-Encoding": https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding
På enkle mangler:
Klienten sier:Jeg støtter komprimeringsalgoritmen "gzip, deflate, sdch, br", du kan bruke hva du vil når du returnerer data.
Servitøren sa:Jeg støtter gzip-komprimeringsalgoritmen, så jeg vil bruke gzip-algoritmen for å komprimere dataene til deg
Klienten sier:Ok, da vil jeg dekryptere de mottatte dataene med gzip-algoritmen
GZIP-algoritmen, som kan komprimere de overførte dataene og kraftig redusere det overførte innholdet, slik at forespørselseffektiviteten vil bli forbedret, slik at den optimaliserte koden er som følger:
Selv om det er en liten detalj, kan effektiviteten sies å være doblet! Det tilsvarer dataene du samlet inn på to dager, og nå kan det samles inn på én dag, og denne artikkelen er dedikert til venner som lærer seg crawling.
Merk: Gzip-komprimeringsalgoritmen har ingenting med programmeringsspråket å gjøre!
Til slutt, legg ved kildekoden:
Turister, hvis dere vil se det skjulte innholdet i dette innlegget, vær så snill Svare
|