Python Scrapy-де проксилерді қалай баптауға және ротациялауға болады
Updated:
Scrapy-дің асинхронды Twisted қозғалтқышында request.meta['proxy'] параметріне тағайындалған http://user:pass@ip:port жолдарын өңдейтін кірістірілген HttpProxyMiddleware (басымдығы 750) бар. Басымдығы 740 болатын 10 жолдық жеке Downloader Middleware жазу арқылы спайдерлеріңіз трафигі шектелмеген VinaProxy статикалық IP пулы бойынша автоматты түрде ротациялана алады.
request.meta['proxy'] = 'http://user:pass@ip:port'- 1 IP40 000 ₫
- 5+ IP35 000 ₫
- 10+ IP25 000 ₫
- 20+ IP25 000 ₫
- 50+ IP25 000 ₫
- 100+ IP25 000 ₫
- 200+ IP25 000 ₫
- 500+ IP25 000 ₫
- 1000+ IP22 000 ₫
- 2000+ IP20 000 ₫
- 1 IP40 000 ₫
- 5+ IP35 000 ₫
- 10+ IP25 000 ₫
- 20+ IP25 000 ₫
- 50+ IP25 000 ₫
- 100+ IP25 000 ₫
- 200+ IP25 000 ₫
- 500+ IP25 000 ₫
- 1000+ IP22 000 ₫
- 2000+ IP20 000 ₫
Scrapy прокси middleware реті мен параллелизм баптаулары
HttpProxyMiddleware компоненті прокси URL-інен user:pass мәнін алып тастап, Proxy-Authorization тақырыбын кодтау үшін 750 ретімен орындалатындықтан, request.meta['proxy'] мәнін орнататын кез келген жеке middleware одан кіші ретпен (мысалы, 740) орындалуы керек:
| Scrapy баптауы | Ұсынылатын мән | Мақсаты |
|---|---|---|
request.meta['proxy'] | 'http://user:pass@ip:port' | Сұранысты көрсетілген VinaProxy проксиі арқылы бағыттайды |
| Middleware басымдығы | 740 (750 алдында) | HttpProxyMiddleware құралының user:pass тақырыбын кодтауын қамтамасыз етеді |
CONCURRENT_REQUESTS_PER_IP | 2-ден 4-ке дейін | HTTP 429 қатесін болдырмау үшін әр прокси IP-ге бір мезгілдегі қосылымдар санын шектейді |
AUTOTHROTTLE_ENABLED | True | Мақсатты кідіріске байланысты жинау кідірісін динамикалық түрде бейімдейді |
Ауқымды Scrapy жинауларына арналған үздік тәжірибелер
- VinaProxy проксилер тізімін
from_crawler()ішінде жүктеп,process_request()ішіндеrequest.meta['proxy'] = random.choice(self.proxies)мәнін тағайындаңыз - Әр IP бойынша сұраныс аралықтары жасанды көрінбеуі үшін
DOWNLOAD_DELAY = 1.0параметрімен біргеRANDOMIZE_DOWNLOAD_DELAY = Trueкүйін қосыңыз - Қайталау кезінде (
429немесе503) сұранысты кезекке қайта қоймас бұрын пулыңыздан басқа проксиді таңдаңыз
Қадам бойынша
- 1
Прокси пулыңызды http://user:pass@ip:port пішіміне келтіріңіз
URL жолдарын алу үшін VinaProxy тізіміңізді біздің Proxy Format Converter құралына қойыңыз.
- 2
middlewares.py ішінде ProxyPoolMiddleware жасаңыз
request.meta['proxy'] = random.choice(self.proxies)орнату үшінprocess_request(self, request, spider)анықтаңыз. - 3
settings.py ішінде 740 басымдығымен тіркеңіз
DOWNLOADER_MIDDLEWARESастына'myproject.middlewares.ProxyPoolMiddleware': 740қосып,CONCURRENT_REQUESTS_PER_IP = 2мәнін орнатыңыз. - 4
scrapy shell немесе scrapy crawl арқылы тексеріңіз
Ротация мен аутентификацияны тексеру үшін
https://vinaproxy.com/api/my-ipмекенжайына тесттік сұраныс жіберіңіз.
Жиі қойылатын сұрақтар
Неліктен 800 басымдығымен орнатылған жеке Scrapy прокси middleware істемей қалды?
Scrapy-дің кірістірілген HttpProxyMiddleware құралы 750 басымдығымен орындалады. Егер сіздің middleware 800 басымдығымен (750 кейін) орындалса, кірістірілген user:pass деректері Proxy-Authorization тақырыбына ешқашан түрлендірілмейді. Әрқашан middleware басымдығын 750 мәнінен төмен (мысалы, 740) орнатыңыз.
Scrapy әр проксиге тұрақты қосылымдарды ашық ұстай ма?
Иә. Twisted қосылымдар пулы әр прокси түйініне тұрақты keep-alive қосылымдарын сақтап тұрады.
VinaProxy проксилері миллиондаған беттерді жинайтын Scrapy тапсырмалары үшін шектеусіз бе?
Иә. Барлық Dedicated IPv4 және Static ISP тарифтері шектеусіз ай сайынғы трафикті қамтиды.
Scrapy спайдерлеріңізді шектеусіз статикалық IP пулдарымен масштабтаңыз
7 ел бойынша лезде көтерме Dedicated IPv4 және Static ISP проксилері.
Scrapy проксилерін сатып алу