0x00
Een web crawler (ook bekend als een web spider, webbot, vaker bekend als een web chaser in de FOAF-gemeenschap) is een programma of script dat automatisch informatie over het World Wide Web scrapt volgens bepaalde regels. Andere, minder vaak gebruikte namen zijn mieren, auto-indexen, simulatoren of wormen.
0x01
Simpel gezegd verzamelen crawlers data volgens hun eigen regels, analyseren de verzamelde data en verkrijgen vervolgens bruikbare data voor zichzelf.
0x02
Webcrawleroptimalisatie kan worden onderverdeeld in twee fasen:
1: Optimaliseren bij het scrapen van data;
2: Optimaliseren van de verwerking van grijpresultaten;
Vandaag hebben we het gewoon over optimalisatie in het scrapingproces!
0x03
Ik heb een paar punten samengevat over de optimalisatie in het crawlingproces:
1: Het kan worden geoptimaliseerd op het fysieke adres, bijvoorbeeld: de doelresourceserver is de Tencent Cloud-host in Shanghai, we proberen de server in dezelfde regio te kiezen, dat wil zeggen de server in de Shanghai-regio, kiezen niet de server in Beijing, Qingdao en andere regio's, maar proberen ook de server in dezelfde IDC-computerruimte te kiezen, we weten dat deze resourcewebsite de server van Tencent Cloud is, we proberen de crawler op de Tencent Cloud-server te plaatsen, niet op de Alibaba Cloud-server!
2: Kies een stabiel en snel netwerk, crawlers stellen over het algemeen hoge eisen aan netwerkkwaliteit, probeer het thuisnetwerk niet te gebruiken, kies het bedrijfsnetwerk of koop een server om data vast te leggen.
3: Kies een efficiëntere crawlertaal, ik heb gehoord dat Python beter is in crawlers, maar ik heb het niet gebruikt, en ik zal het later testen, vandaag leg ik het vooral uit in de .net-taal.
0x04
Voor zaken als snel kopen zijn de eisen voor het snel grijpen hoog, het kan worden omschreven als een kwestie van tijd, vroeg om de data te krijgen, wat de kans op het ophalen verhoogt, het volgende is: Ik schreef een demo met de console, de test om de data van deze website te verzamelen, zoals te zien is in de onderstaande figuur:
(Hoe korter de tijd, hoe sneller het gaat)
De bovenstaande datarangschikking:1: Native geoptimaliseerde code, 2: Native code, 3: Third-party plug-in dlls (pakketten)
0x05
Waarom doen plugins (pakketten) van derden het langst over? Plug-ins van derden zijn eigenlijk een groot aantal encapsulaties van native code, een groot aantal logische oordelen en relatief veelzijdig, wat kan leiden tot een trage kruipsnelheid.
Hier is de native code:
De native code staat slechts een paar regels erboven.De gemiddelde tijd is nog steeds 184 milliseconden,Hoe eenvoudiger de code, hoe moeilijker het is om te optimaliserenDenk je dat hoe bovenstaande code geoptimaliseerd kan worden om een gemiddelde tijd van 99 milliseconden te bereiken?Het snelheidsverschil is verdubbeld!
0x06
Als de doelresourceserver gzip-compressie ondersteunt, zal de request-header bij het openen van de website en de browser de website aanvragen, de volgende parameters hebben:
Responsheaderparameters:
Inleiding tot "Accept-Encoding": https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding
In gewone taal:
De cliënt zegt:Ik steun het compressie-algoritme "gzip, deflate, sdch, br", je kunt gebruiken wat je wilt bij het teruggeven van data.
De ober zei:Ik ondersteun toevallig het gzip-compressie-algoritme, dus ik zal het gzip-algoritme gebruiken om de data naar jou te comprimeren
De cliënt zegt:Oké, dan ontsleutel ik de ontvangen data met het gzip-algoritme
het gzip-algoritme, dat de verzonden data kan comprimeren en de verzonden inhoud sterk kan verminderen, waardoor de aanvraagefficiëntie wordt verbeterd, waardoor de geoptimaliseerde code als volgt is:
Hoewel het een klein detail is, kan men zeggen dat de efficiëntie verdubbeld is! Het is gelijk aan de data die je in twee dagen hebt verzameld, en nu kan het in 1 dag worden verzameld, en dit artikel is gewijd aan vrienden die leren crawlen.
Opmerking: Het gzip-compressie-algoritme heeft niets met de programmeertaal te maken!
Voeg tenslotte de broncode bij:
Toeristen, als jullie de verborgen inhoud van dit bericht willen zien, alsjeblieft Antwoord
|