Hvernig á að setja upp og skipta um proxy-þjóna í Python Scrapy
Updated:
Ósamstillta Twisted-vélin í Scrapy inniheldur innbyggt HttpProxyMiddleware (með forganginn 750) sem þáttar http://user:pass@ip:port strengi sem eru tengdir við request.meta['proxy']. Með því að skrifa 10 lína sérsniðið Downloader Middleware með forganginn 740 geta vefköngulærnar þínar sjálfkrafa skipt á milli hóps af ótakmörkuðum, föstum VinaProxy IP-tölum.
request.meta['proxy'] = 'http://user:pass@ip:port'- 1 IP40.000 VND
- 5+ IP-tölur35.000 VND
- 10+ IP-tölur25.000 VND
- 20+ IP-tölur25.000 VND
- 50+ IP-tölur25.000 VND
- 100+ IP-tölur25.000 VND
- 200+ IP-tölur25.000 VND
- 500+ IP-tölur25.000 VND
- 1000+ IP-tölur22.000 VND
- 2000+ IP-tölur20.000 VND
- 1 IP40.000 VND
- 5+ IP-tölur35.000 VND
- 10+ IP-tölur25.000 VND
- 20+ IP-tölur25.000 VND
- 50+ IP-tölur25.000 VND
- 100+ IP-tölur25.000 VND
- 200+ IP-tölur25.000 VND
- 500+ IP-tölur25.000 VND
- 1000+ IP-tölur22.000 VND
- 2000+ IP-tölur20.000 VND
Röð Scrapy proxy-millihugbúnaðar og stillingar á samtímatengingum
Þar sem HttpProxyMiddleware keyrir í röð 750 til að fjarlægja user:pass úr proxy-vefslóðinni og kóða Proxy-Authorization hausinn, verður sérsniðinn millihugbúnaður sem stillir request.meta['proxy'] að keyra á lægri tölu (t.d. 740):
| Scrapy-stilling | Ráðlagt gildi | Tilgangur |
|---|---|---|
request.meta['proxy'] | 'http://user:pass@ip:port' | Beinir beiðninni í gegnum tilgreindan VinaProxy proxy-þjón |
| Forgangur millihugbúnaðar | 740 (á undan 750) | Tryggir að HttpProxyMiddleware kóði user:pass hausinn |
CONCURRENT_REQUESTS_PER_IP | 2 til 4 | Takmarkar samtímatengingar á hverja proxy IP-tölu til að forðast HTTP 429 |
AUTOTHROTTLE_ENABLED | True | Aðlagar biðtíma milli beiðna sjálfvirkt út frá svartíma markþjónsins |
Bestu starfsvenjur fyrir umfangsmikið Scrapy-skrið
- Hladdu inn VinaProxy proxy-listanum þínum í
from_crawler()og úthlutaðurequest.meta['proxy'] = random.choice(self.proxies)inni íprocess_request() - Virkjaðu
RANDOMIZE_DOWNLOAD_DELAY = TruesamhliðaDOWNLOAD_DELAY = 1.0svo tímabil milli beiðna fyrir hverja IP-tölu virðist aldrei vélrænt - Veldu annan proxy-þjón úr safninu þínu við endurtekningu (
429eða503) áður en beiðnin er sett aftur í biðröð
Skref fyrir skref
- 1
Forsníddu proxy-safnið þitt sem http://user:pass@ip:port
Límdu VinaProxy-listann þinn inn í Proxy Format Converter hjá okkur til að fá vefslóðastrengi.
- 2
Búðu til ProxyPoolMiddleware í middlewares.py
Skilgreindu
process_request(self, request, spider)til að stillarequest.meta['proxy'] = random.choice(self.proxies). - 3
Skráðu með forgangi 740 í settings.py
Bættu við
'myproject.middlewares.ProxyPoolMiddleware': 740undirDOWNLOADER_MIDDLEWARESog stilltuCONCURRENT_REQUESTS_PER_IP = 2. - 4
Prófaðu með scrapy shell eða scrapy crawl
Keyrðu prófunarbeiðni á
https://vinaproxy.com/api/my-iptil að sannreyna skiptingu og auðkenningu.
Algengar spurningar
Af hverju brást sérsniðni Scrapy proxy-millihugbúnaðurinn minn þegar hann var stilltur á forganginn 800?
Innbyggt HttpProxyMiddleware í Scrapy keyrir með forganginn 750. Ef millihugbúnaðurinn þinn keyrir á 800 (á eftir 750) er innfelldum user:pass auðkennum aldrei breytt í Proxy-Authorization haus. Stilltu forgang millihugbúnaðar alltaf undir 750 (eins og 740).
Heldur Scrapy opnum stöðugum tengingum við hvern proxy-þjón?
Já. Tenglasafn Twisted viðheldur stöðugum keep-alive tengingum við hvern proxy-endapunkt.
Eru VinaProxy proxy-þjónar ótakmarkaðir fyrir Scrapy-verkefni með milljónum síðna?
Já. Allar Dedicated IPv4 og Static ISP áskriftir innihalda ótakmarkað mánaðarlegt gagnamagn.
Stækkaðu Scrapy-vefköngulærnar þínar með ótakmörkuðum föstum IP-hópum
Tafarlaus magnkaup á Dedicated IPv4 og Static ISP proxy-þjónum í 7 löndum.
Kaupa Scrapy proxy-þjóna