0x00
Crawler internetowy (znany również jako web spider, web bot, częściej nazywany web chaserem w społeczności FOAF) to program lub skrypt, który automatycznie zbiera informacje o World Wide Web zgodnie z określonymi zasadami. Inne, rzadziej używane nazwy to mrówki, auto-indeksy, symulatory lub robaki.
0x01
Mówiąc prosto, crawlery pobierają dane według własnych reguł, analizują zebrane dane, a następnie pozyskują dla siebie użyteczne dane.
0x02
Optymalizacja pod indeksem internetowym można podzielić na dwa etapy:
1: Optymalizacja podczas zbierania danych;
2: Optymalizacja przetwarzania wyników chwytania;
Dziś mówimy tylko o optymalizacji procesu skrobania!
0x03
Podsumowałem kilka punktów dotyczących optymalizacji w procesie indeksowania:
1: Można go zoptymalizować pod adresem fizycznym, na przykład: docelowym serwerem zasobów jest Tencent Cloud host w Szanghaju, staramy się wybrać serwer w tym samym regionie, czyli serwer w regionie Szanghaju, nie wybieramy serwera w Pekinie, Qingdao i innych regionach, ale też staramy się wybrać serwer w tym samym pokoju komputerowym IDC, wiemy, że ta strona zasobowa to serwer Tencent Cloud, staramy się umieścić crawlera na serwerze Tencent Cloud, a nie na serwerze Alibaba Cloud!
2: Wybierz stabilną i szybką sieć, zazwyczaj crawlery mają wysokie wymagania dotyczące jakości sieci, staraj się nie korzystać z sieci domowej, wybierz sieć firmową lub kup serwer do rejestrowania danych.
3: Wybierz bardziej wydajny język crawlera, słyszałem, że python jest lepszy do crawlerów, ale go nie używałem, a dziś to przetestuję, głównie wyjaśnię to w języku .net.
0x04
W przypadku takich rzeczy jak szybkie kupowanie wymagania są wysokie, można to opisać jako kwestię czasu, wczesne zdobycie danych, zwiększenie szans na zdobycie, poniżej napisano demo na konsoli, test pobierania danych z tej strony, jak pokazano na poniższym rysunku:
(Im krótszy czas, tym szybciej)
Powyższe rankingi danych:1: Kod natywnie zoptymalizowany, 2: Kod natywny, 3: wtyczki DLL firm trzecich
0x05
Dlaczego wtyczki firm trzecich (pakiety) zajmują najwięcej czasu? Wtyczki firm trzecich to w rzeczywistości duża liczba enkapsulacji natywnego kodu, duża liczba logicznych ocen i stosunkowo wszechstronne, co może prowadzić do wolnego przeszukiwania się.
Oto natywny kod:
Kod natywny jest tylko kilka linijek powyżej.Średni czas nadal wynosi 184 milisekundy,Im prostszy kod, tym trudniej go zoptymalizowaćCzy uważasz, że jak można zoptymalizować powyższy kod, aby osiągnąć średni czas 99 milisekund?Różnica prędkości jest podwojona!
0x06
Jeśli docelowy serwer zasobów obsługuje kompresję gzip, gdy wchodzimy na stronę internetową, a przeglądarka żąda jej żądania, nagłówek żądania będzie miał następujące parametry:
Parametry nagłówka odpowiedzi:
Wprowadzenie do "Accept-Encoding": https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding
Mówiąc prosto:
Klient mówi:Wspieram algorytm kompresji "gzip, deflate, sdch, br", możesz używać dowolnego narzędzia podczas zwracania danych.
Serwer powiedział:Wspieram algorytm kompresji gzip, więc użyję algorytmu gzip, aby skompresować dane do Ciebie
Klient mówi:Dobrze, więc odszyfruję odebrane dane za pomocą algorytmu gzip
algorytm gzip, który może kompresować przesyłane dane i znacznie zmniejszyć ilość przesyłanej zawartości, dzięki czemu efektywność żądań zostanie poprawiona, dlatego zoptymalizowany kod wygląda następująco:
Chociaż to drobny szczegół, można powiedzieć, że wydajność jest podwojona! Jest równoważny z danymi, które zebrałeś w dwa dni, a teraz można je zebrać w jeden dzień, a ten artykuł jest dedykowany przyjaciołom, którzy uczą się crawlingu.
Uwaga: Algorytm kompresji gzip nie ma nic wspólnego z językiem programowania!
Na koniec dołącz kod źródłowy:
Turyści, jeśli chcecie zobaczyć ukrytą zawartość tego wpisu, proszę Odpowiedź
|