Kuidas seadistada ja roteerida proksisid Python Scrapys
Updated:
Scrapy asünkroonne Twisted-mootor sisaldab sisseehitatud vahetarkvara HttpProxyMiddleware (prioriteediga 750), mis parsib parameetrile request.meta['proxy'] määratud http://user:pass@ip:port sõnesid. Kirjutades prioriteediga 740 10-realise kohandatud Downloader Middleware'i, saavad teie ämblikud automaatselt roteeruda üle piiramatu mahuga VinaProxy staatiliste IP-de kogumi.
request.meta['proxy'] = 'http://user:pass@ip:port'- 1 IP40 000 ₫
- 5+ IP-d35 000 ₫
- 10+ IP-d25 000 ₫
- 20+ IP-d25 000 ₫
- 50+ IP-d25 000 ₫
- 100+ IP-d25 000 ₫
- 200+ IP-d25 000 ₫
- 500+ IP-d25 000 ₫
- 1000+ IP-d22 000 ₫
- 2000+ IP-d20 000 ₫
- 1 IP40 000 ₫
- 5+ IP-d35 000 ₫
- 10+ IP-d25 000 ₫
- 20+ IP-d25 000 ₫
- 50+ IP-d25 000 ₫
- 100+ IP-d25 000 ₫
- 200+ IP-d25 000 ₫
- 500+ IP-d25 000 ₫
- 1000+ IP-d22 000 ₫
- 2000+ IP-d20 000 ₫
Scrapy proksi vahetarkvara järjekord ja paralleelsuse seaded
Kuna HttpProxyMiddleware töötab järjekorranumbriga 750, et eemaldada proksi URL-ist user:pass ja kodeerida päis Proxy-Authorization, peab iga kohandatud vahetarkvara, mis määrab parameetri request.meta['proxy'], töötama väiksema numbriga (nt 740):
| Scrapy seade | Soovitatav väärtus | Eesmärk |
|---|---|---|
request.meta['proxy'] | 'http://user:pass@ip:port' | Suunab päringu läbi määratud VinaProxy proksi |
| Vahetarkvara prioriteet | 740 (enne 750) | Tagab, et HttpProxyMiddleware kodeerib user:pass päise |
CONCURRENT_REQUESTS_PER_IP | 2 kuni 4 | Piirab samaaegseid sokleid proksi IP kohta, et vältida viga HTTP 429 |
AUTOTHROTTLE_ENABLED | True | Kohandab kraapimise viivitust dünaamiliselt sihtmärgi latentsuse põhjal |
Parimad tavad suuremahuliseks kraapimiseks Scrapyga
- Laadige oma VinaProxy prokside nimekiri meetodis
from_crawler()ja määrakerequest.meta['proxy'] = random.choice(self.proxies)funktsioonisprocess_request() - Aktiveerige
RANDOMIZE_DOWNLOAD_DELAY = Truekoos seadegaDOWNLOAD_DELAY = 1.0, et päringute intervallid IP kohta ei mõjuks robotslikult - Uuesti proovimisel (
429või503) valige enne päringu uuesti järjekorda lisamist oma kogumist teine proksi
Samm-sammult
- 1
Vormindage oma proksikogum kujule http://user:pass@ip:port
Kleepige oma VinaProxy nimekiri meie proksivormingu teisendajasse, et saada URL-i sõned.
- 2
Looge ProxyPoolMiddleware failis middlewares.py
Defineerige
process_request(self, request, spider), et määratarequest.meta['proxy'] = random.choice(self.proxies). - 3
Registreerige prioriteediga 740 failis settings.py
Lisage
'myproject.middlewares.ProxyPoolMiddleware': 740jaotisseDOWNLOADER_MIDDLEWARESja määrakeCONCURRENT_REQUESTS_PER_IP = 2. - 4
Testige käskudega scrapy shell või scrapy crawl
Käivitage testpäring aadressile
https://vinaproxy.com/api/my-ip, et kontrollida roteerumist ja autentimist.
Korduma kippuvad küsimused
Miks mu kohandatud Scrapy proksi vahetarkvara prioriteediga 800 ebaõnnestus?
Scrapy sisseehitatud HttpProxyMiddleware töötab prioriteediga 750. Kui teie vahetarkvara töötab prioriteediga 800 (pärast 750), ei teisendata URL-is olevaid user:pass mandaate kunagi päiseks Proxy-Authorization. Seadke oma vahetarkvara prioriteet alati alla 750 (näiteks 740).
Kas Scrapy hoiab iga proksiga püsivat ühendust avatuna?
Jah. Twisted'i ühenduste kogum hoiab iga proksi lõpp-punkti kohta avatuna püsivaid keep-alive-ühendusi.
Kas VinaProxy proksid on mitme miljoni lehekülje kraapimisel Scrapyga piiramatu mahuga?
Jah. Kõik Dedicated IPv4 ja Static ISP paketid sisaldavad piiramatut igakuist andmemahtu.
Skaleerige oma Scrapy ämblikke piiramatu mahuga staatiliste IP-kogumitega
Kohesed Dedicated IPv4 ja Static ISP hulgiproksid 7 riigis.
Osta Scrapy proksisid