Python Scrapy-də proksiləri necə qurmaq və rotasiya etmək olar
Updated:
Scrapy-nin asinxron Twisted mühərriki request.meta['proxy'] parametrinə təyin edilmiş http://user:pass@ip:port sətrlərini təhlil edən daxili HttpProxyMiddleware (750 prioriteti ilə) təqdim edir. 740 prioritetində 10 sətirlik xüsusi Downloader Middleware yazmaq hörümçəklərinizin limitsiz VinaProxy statik IP hovuzunda avtomatik rotasiya etməsinə imkan verir.
request.meta['proxy'] = 'http://user:pass@ip:port'- 1 İP40.000 ₫
- 5+ İP35.000 ₫
- 10+ İP25.000 ₫
- 20+ İP25.000 ₫
- 50+ İP25.000 ₫
- 100+ İP25.000 ₫
- 200+ İP25.000 ₫
- 500+ İP25.000 ₫
- 1000+ İP22.000 ₫
- 2000+ İP20.000 ₫
- 1 İP40.000 ₫
- 5+ İP35.000 ₫
- 10+ İP25.000 ₫
- 20+ İP25.000 ₫
- 50+ İP25.000 ₫
- 100+ İP25.000 ₫
- 200+ İP25.000 ₫
- 500+ İP25.000 ₫
- 1000+ İP22.000 ₫
- 2000+ İP20.000 ₫
Scrapy proksi middleware ardıcıllığı və paralel sorğu parametrləri
HttpProxyMiddleware proksi URL-dən user:pass məlumatını çıxarmaq və Proxy-Authorization başlığını kodlaşdırmaq üçün 750 növbəsində işlədiyindən, request.meta['proxy'] təyin edən istənilən xüsusi middleware daha kiçik bir nömrədə (məsələn, 740) işləməlidir:
| Scrapy Parametri | Tövsiyə Edilən Dəyər | Məqsəd |
|---|---|---|
request.meta['proxy'] | 'http://user:pass@ip:port' | Sorğunu təyin edilmiş VinaProxy proksisi vasitəsilə yönləndirir |
| Middleware Prioriteti | 740 (750-dən əvvəl) | HttpProxyMiddleware-in user:pass başlığını kodlaşdırmasını təmin edir |
CONCURRENT_REQUESTS_PER_IP | 2 ilə 4 arası | HTTP 429 xətasından qaçınmaq üçün proksi IP-si üzrə eyni vaxtda qoşulan soketləri məhdudlaşdırır |
AUTOTHROTTLE_ENABLED | True | Hədəfin gecikmə müddətinə əsasən tarama gecikməsini dinamik olaraq uyğunlaşdırır |
Yüksək həcmli Scrapy taramaları üçün ən yaxşı təcrübələr
- VinaProxy proksi siyahınızı
from_crawler()daxilində yükləyin vəprocess_request()daxilindərequest.meta['proxy'] = random.choice(self.proxies)təyin edin - IP üzrə sorğu intervallarının heç vaxt robotik görünməməsi üçün
DOWNLOAD_DELAY = 1.0ilə yanaşıRANDOMIZE_DOWNLOAD_DELAY = Trueparametrini aktivləşdirin - Təkrar cəhd zamanı (
429və ya503), sorğunu yenidən növbəyə qoymazdan əvvəl hovuzunuzdan fərqli bir proksi seçin
Addım-addım
- 1
Proksi hovuzunuzu http://user:pass@ip:port formatına salın
URL sətrlərini əldə etmək üçün VinaProxy siyahınızı Proxy Format Converter alətimizə yapışdırın.
- 2
middlewares.py faylında ProxyPoolMiddleware yaradın
request.meta['proxy'] = random.choice(self.proxies)təyin etmək üçünprocess_request(self, request, spider)funksiyasını təyin edin. - 3
settings.py faylında 740 prioriteti ilə qeydiyyatdan keçirin
DOWNLOADER_MIDDLEWARESbölməsinə'myproject.middlewares.ProxyPoolMiddleware': 740əlavə edin vəCONCURRENT_REQUESTS_PER_IP = 2təyin edin. - 4
scrapy shell və ya scrapy crawl ilə sınaqdan keçirin
Rotasiya və autentifikasiyanı yoxlamaq üçün
https://vinaproxy.com/api/my-ipünvanına sınaq sorğusu göndərin.
Tez-tez verilən suallar
Xüsusi Scrapy proksi middleware 800 prioritetinə təyin edildikdə niyə işləmədi?
Scrapy-nin daxili HttpProxyMiddleware mexanizmi 750 prioritetində işləyir. Əgər sizin middleware 800 prioritetində (750-dən sonra) işləyirsə, daxildəki user:pass giriş məlumatları heç vaxt Proxy-Authorization başlığına çevrilmir. Həmişə middleware prioritetinizi 750-dən aşağı (məsələn, 740) təyin edin.
Scrapy hər bir proksi ilə daimi bağlantıları açıq saxlayırmı?
Bəli. Twisted-in bağlantı hovuzu hər bir proksi nöqtəsi üzrə daimi keep-alive bağlantılarını saxlayır.
Milyonlarla səhifəlik Scrapy işləri üçün VinaProxy proksiləri limitsizdirmi?
Bəli. Bütün Dedicated IPv4 və Static ISP planlarına aylıq limitsiz trafik daxildir.
Limitsiz statik IP hovuzları ilə Scrapy hörümçəklərinizi miqyaslandırın
7 ölkə üzrə dərhal toplu Dedicated IPv4 və Static ISP proksiləri.
Scrapy Proksiləri Alın