0x00
A webcrawler (más néven web pók, web bot, a FOAF közösségben inkább web chaser) egy program vagy szkript, amely automatikusan kaparja az információkat a World Wide Webről bizonyos szabályok szerint. Más, kevésbé használt nevek közé tartoznak a hangyák, autoindexek, szimulátorok vagy féregek.
0x01
Egyszerűen fogalmazva: a crawlerek saját szabályaik szerint gyűjtik az adatokat, elemzik a rögzített adatokat, majd hasznos adatokat szereznek maguknak.
0x02
A webcrawler optimalizálása két szakaszra bontható:
1: Optimalizálás adatgyűjtéskor;
2: Optimalizálja a megértő eredmények feldolgozását;
Ma csak a kaparási folyamat optimalizálásáról beszélünk!
0x03
Összefoglaltam néhány pontot a crawling folyamatban történő optimalizálásról:
1: Optimalizálható a fizikai címre, például: a cél erőforrás szerver a Tencent Cloud hoszt Sanghajban, mi megpróbáljuk kiválasztani a szervert ugyanabban a régióban, vagyis a sanghaji régióban lévő szervert, nem Pekingben, Qingdaóban és más régiókban található szervert, hanem ugyanabban az IDC számítógépteremben is próbáljuk kiválasztani a szervert, tudjuk, hogy ez az erőforrás weboldal a Tencent Cloud szervere, megpróbáljuk a crawlert a Tencent Cloud szerverre tenni, nem az Alibaba Cloud szerverre!
2: Válassz stabil és gyors hálózatot, általában a crawlereknek magas a hálózati minőség követelményei, próbálj meg nem használni az otthoni hálózatot, válaszd a céges hálózatot vagy vásárolj szervert adatrögzítéshez.
3: Válassz egy hatékonyabb crawler nyelvet, hallottam, hogy a python jobb a crawlerekben, de én még nem használtam, és később tesztelem, ma főleg .net nyelven magyarázom el.
0x04
Olyan dolgoknál, mint a gyorsvásárlás, a fogás sebességének követelményei magasak, leírható, hogy idő kérdése, korai az adatok megszerzése, növelve a megszerzés esélyét, a következőképpen írtam egy demót a konzolon, a weboldal adatainak megszerzésének tesztjét, ahogy az alábbi ábrán látható:
(Minél rövidebb az idő, annál gyorsabb)
A fenti adatrangsor:1: Natiivileg optimalizált kód, 2: Natív kód, 3: Harmadik féltől származó plug-in dll-ek (csomagok)
0x05
Miért tartanak a harmadik féltől származó pluginok (csomagok) a legsokáig? A harmadik féltől származó bővítmények valójában sok natív kód kapszulációját, sok logikai ítéletet és viszonylag sokoldalúak, ami lassú kúszósebességhez vezethet.
Íme a natív kód:
A natív kód csak néhány sorral fent van.Az átlagos idő még mindig 184 milliszekundum,Minél egyszerűbb a kód, annál nehezebb optimalizálniÚgy gondolod, hogyan lehet a fenti kódot optimalizálni, hogy átlagosan 99 milliszekundum időt érjen el?A sebességkülönbség megduplázódik!
0x06
Ha a cél erőforrás szerver támogatja a gzip tömörítést, amikor elérjük a weboldalt, és a böngésző kéri a weboldalt, a kérés fejlécének a következő paraméterei lesznek:
Válaszfejléc paraméterek:
Bevezetés az "Accept-Encoding"-hoz: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding
Egyszerű kifejezéssel:
Az ügyfél így mondja:Támogatom a "gzip, deflate, sdch, br" tömörítési algoritmust, amit akarsz, amit akarsz az adatok visszaküldésekor.
A szerver így nyilatkozott:Én támogatom a gzip tömörítő algoritmust, ezért a gzip algoritmust fogom használni, hogy tömörítsem az adatokat neked
Az ügyfél így mondja:Rendben, akkor a gzip algoritmussal dekódolom a beérkezett adatokat
a gzip algoritmus, amely képes tömöríteni az átküldött adatokat és jelentősen csökkenteni az átküldött tartalmat, így a kérések hatékonysága javul, így az optimalizált kód a következő:
Bár apró részlet, a hatékonyság kétszeresebb! Ez megfelel annak, amit két nap alatt gyűjtöttél, és most már egy nap alatt is összegyűjthető, és ez a cikk azoknak a barátoknak szól, akik megtanulják a kúszást.
Megjegyzés: A gzip tömörítési algoritmusnak semmi köze a programozási nyelvhez!
Végül csatoljuk a forráskódot:
Turisták, ha szeretnétek megnézni ennek a bejegyzésnek a rejtett tartalmát, kérlek Válasz
|