0x00
Un web crawler (noto anche come web spider, web bot, più comunemente chiamato web chaser nella comunità FOAF) è un programma o script che raccoglie automaticamente informazioni sul World Wide Web secondo determinate regole. Altri nomi meno comunemente usati includono formiche, auto-indici, simulatori o vermi.
0x01
Per dirla semplicemente, i crawler raccolgono dati secondo le proprie regole, analizzano i dati raccolti e poi ottengono dati utili per sé stessi.
0x02
L'ottimizzazione per il web crawler può essere suddivisa in due fasi:
1: Ottimizzare durante lo scraping dei dati;
2: Ottimizzare l'elaborazione dei risultati di afferre;
Oggi parliamo solo di ottimizzazione nel processo di scraping!
0x03
Ho riassunto alcuni punti sull'ottimizzazione nel processo di crawling:
1: Può essere ottimizzato sull'indirizzo fisico, ad esempio: il server di risorse target è l'host Tencent Cloud a Shanghai, cerchiamo di scegliere il server nella stessa regione, cioè il server nella regione di Shanghai, non scegliamo il server di Pechino, Qingdao e altre regioni, ma proviamo anche a scegliere il server nella stessa sala computer IDC, sappiamo che questo sito di risorse è il server di Tencent Cloud, cerchiamo di mettere il crawler sul server Tencent Cloud, non su quello di Alibaba Cloud!
2: Scegliere una rete stabile e veloce, generalmente i crawler hanno requisiti elevati per la qualità della rete, cercare di non usare la rete domestica, scegliere la rete aziendale o acquistare un server per acquisire dati.
3: Scegli un linguaggio di crawler più efficiente, ho sentito che python è migliore nei crawler, ma non l'ho mai usato, e lo testerò più tardi, oggi lo spiegherò principalmente nel linguaggio .net.
0x04
Per cose come l'acquisto rapido, i requisiti per la velocità di raccolta sono elevati, si può descrivere come questione di tempo, in anticipo, per ottenere i dati, aumentare la probabilità di afferre; di seguito ho scritto una demo con la console, il test per ottenere i dati di questo sito, come mostrato nella figura qui sotto:
(Più il tempo è breve, più veloce)
La classifica dei dati sopra:1: Codice ottimizzato nativamente, 2: Codice nativo, 3: DLL plug-in di terze parti (package)
0x05
Perché i plugin di terze parti (pacchetti) impiegano di più? I plug-in di terze parti sono in realtà un gran numero di incapsulazioni di codice nativo, un gran numero di giudizi logici e sono relativamente versatili, il che può portare a una velocità di rastrellamento lenta.
Ecco il codice nativo:
Il codice nativo è solo poche righe sopra.Il tempo medio è ancora di 184 millisecondi,Più semplice è il codice, più difficile è ottimizzarloPensi che come possa essere ottimizzato il codice sopra per raggiungere un tempo medio di 99 millisecondi?La differenza di velocità è raddoppiata!
0x06
Se il server di risorse target supporta la compressione gzip, quando accediamo al sito e il browser richiede il sito, l'intestazione della richiesta avrà i seguenti parametri:
Parametri dell'intestazione di risposta:
Introduzione alla "Accettazione-Codifica": https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding
In termini semplici:
Il cliente afferma:Supporto l'algoritmo di compressione "gzip, deflate, sdch, br", puoi usare quello che vuoi quando restituisci i dati.
Il cameriere ha detto:Io supporto l'algoritmo di compressione gzip, quindi userò l'algoritmo gzip per comprimere i dati su di te
Il cliente afferma:Ok, allora decripterò i dati ricevuti con l'algoritmo gzip
Algoritmo gzip, che può comprimere i dati trasmessi e ridurre notevolmente il contenuto trasmesso, quindi l'efficienza delle richieste sarà migliorata, quindi il codice ottimizzato è il seguente:
Anche se è un dettaglio piccolo, si può dire che l'efficienza sia raddoppiata! È equivalente ai dati raccolti in due giorni, e ora può essere raccolto in un giorno, e questo articolo è dedicato ad amici che imparano a crawlare.
Nota: L'algoritmo di compressione gzip non ha nulla a che fare con il linguaggio di programmazione!
Infine, allega il codice sorgente:
Turisti, se volete vedere il contenuto nascosto di questo post, vi prego Risposta
|