Brez proxy IP-jev bo delo z pajkami težko, zato bo veliko inženirjev pajkov moralo kupiti učinkovit in stabilen proxy IP. Z visokokakovostnim proxy IP-jem, ali se lahko sprostite? Stvari niso tako preproste, prav tako je potrebno optimizirati shemo, racionalno razporediti vire, izboljšati učinkovitost dela in izvajati delo s pajkami bolj učinkovito, hitreje in stabilno.
Možnost 1: Vsak proces naključno izbere seznam IP-jev iz vmesniknega API-ja (na primer, da pridobi 100 IP-jev naenkrat), da jih prehaja, nato pa pokliče API, da jih pridobi, če ne uspe, splošna logika pa je naslednja:
1. Vsak proces (ali nit) naključno pridobi serijo IP naslovov iz vmesnika in poskuša v zanki pridobiti podatke s seznama IP.
2. Če je dostop uspešen, nadaljujte z iskanjem naslednjega.
3. Če ne uspe (kot so časovna omejitev, verifikacijska koda itd.), vzemi paket IP-jev iz vmesnika in nadaljuj z poskusi.
Slabosti rešitve: Vsaka IP ima datum poteka; če jih izluščimo 100, je ob uporabi desete večina slednjih lahko neveljavna. Če nastavite HTTP zahtevo s časovno omejitvijo povezave 3 sekunde in 5 sekund za branje, lahko izgubite 3-8 sekund časa, morda pa se teh 3-8 sekund lahko zagrabi več desetkrat.
Možnost 2: Vsak proces vzame naključni IP iz vmesnika API-ja za uporabo in nato pokliče API, da pridobi IP, če ta ne uspe, splošna logika je naslednja:
1. Vsak proces (ali nit) naključno pridobi IP iz vmesnika in ga uporabi za dostop do virov.
2. Če je dostop uspešen, nadaljujte z iskanjem naslednjega.
3. Če ne uspe (kot so časovni iztek, verifikacijska koda itd.), naključno izberi IP iz vmesnika in nadaljuj z poskusi.
Slabosti: Klicanje API-jev za pridobivanje IP naslovov je zelo pogosto, kar povzroča velik pritisk na proxy strežnik, vpliva na stabilnost API vmesnika in lahko omeji izvlečenje. Ta shema prav tako ni primerna in je ni mogoče izvajati trajnostno in stabilno.
Možnost 3: Najprej izvlecite veliko število IP-jev in jih uvozite v lokalno bazo podatkov, nato pa vzemite IP iz baze, splošna logika je naslednja:
1. Ustvarite tabelo v bazi podatkov, napišite uvozni skript, zahtevajte API na minuto (preverite predloge ponudnika storitev proxy IP) in uvozite seznam IP v bazo podatkov.
2. Zabeležite čas uvoza, IP, port, čas poteka, status razpoložljivosti IP in druga polja v bazi podatkov;
3. Napišite skripto za prijem, skripta crab prebere razpoložljivi IP iz baze podatkov, vsak proces pa pridobi IP iz baze za uporabo.
4. Izvedite preskakovanje, ocenite rezultate, obdelajte piškotke itd., dokler obstaja verifikacijska koda ali okvara, opustite ta IP in zamenjajte na nov IP.
Ta rešitev učinkovito preprečuje porabo virov proxy strežnika, učinkovito dodeljuje uporabo proxy IP, je učinkovitejša in stabilnejša ter zagotavlja vzdržljivost in stabilnost dela s crawlerjem. |