Python Scrapy တွင် proxy များကို စနစ်ထည့်သွင်းပြီး အလှည့်ကျ အသုံးပြုနည်း
Updated:
Scrapy ၏ asynchronous Twisted အင်ဂျင်တွင် request.meta['proxy'] ထံ သတ်မှတ်ပေးထားသော http://user:pass@ip:port string များကို parse လုပ်ပေးသည့် built-in HttpProxyMiddleware (ဦးစားပေးအဆင့် 750 တွင်) ပါဝင်သည်။ ဦးစားပေးအဆင့် 740 တွင် စာကြောင်းရေ 10 ကြောင်းပါ custom Downloader Middleware တစ်ခုကို ရေးသားခြင်းဖြင့် သင့် spider များကို အကန့်အသတ်မဲ့ VinaProxy static IP pool တစ်ခုလုံးတွင် အလိုအလျောက် အလှည့်ကျ ပြောင်းလဲအသုံးပြုစေနိုင်ပါသည်။
request.meta['proxy'] = 'http://user:pass@ip:port'- 1 IP၄၀,၀၀၀ ₫
- 5+ IPs၃၅,၀၀၀ ₫
- 10+ IPs၂၅,၀၀၀ ₫
- 20+ IPs၂၅,၀၀၀ ₫
- 50+ IPs၂၅,၀၀၀ ₫
- 100+ IPs၂၅,၀၀၀ ₫
- 200+ IPs၂၅,၀၀၀ ₫
- 500+ IPs၂၅,၀၀၀ ₫
- 1000+ IPs၂၂,၀၀၀ ₫
- 2000+ IPs၂၀,၀၀၀ ₫
- 1 IP၄၀,၀၀၀ ₫
- 5+ IPs၃၅,၀၀၀ ₫
- 10+ IPs၂၅,၀၀၀ ₫
- 20+ IPs၂၅,၀၀၀ ₫
- 50+ IPs၂၅,၀၀၀ ₫
- 100+ IPs၂၅,၀၀၀ ₫
- 200+ IPs၂၅,၀၀၀ ₫
- 500+ IPs၂၅,၀၀၀ ₫
- 1000+ IPs၂၂,၀၀၀ ₫
- 2000+ IPs၂၀,၀၀၀ ₫
Scrapy proxy middleware အစီအစဉ်နှင့် concurrency ဆက်တင်များ
HttpProxyMiddleware သည် proxy URL မှ user:pass ကို ဖယ်ရှားပြီး Proxy-Authorization header ကို encode လုပ်ရန် အစီအစဉ် 750 ဖြင့် လုပ်ဆောင်သောကြောင့် request.meta['proxy'] ကို သတ်မှတ်သည့် မည်သည့် custom middleware မဆို ပိုငယ်သော နံပါတ်တစ်ခု (ဥပမာ- 740) ဖြင့် လုပ်ဆောင်ရပါမည်-
| Scrapy ဆက်တင် | အကြံပြုထားသော တန်ဖိုး | ရည်ရွယ်ချက် |
|---|---|---|
request.meta['proxy'] | 'http://user:pass@ip:port' | တောင်းဆိုချက်ကို သတ်မှတ်ထားသော VinaProxy proxy မှတစ်ဆင့် ပို့ဆောင်ပေးသည် |
| Middleware Priority | 740 (750 မတိုင်မီ) | HttpProxyMiddleware က user:pass header ကို encode လုပ်ကြောင်း သေချာစေသည် |
CONCURRENT_REQUESTS_PER_IP | 2 မှ 4 | HTTP 429 ကို ရှောင်ရှားရန် proxy IP တစ်ခုလျှင် တစ်ပြိုင်နက်တည်း အသုံးပြုနိုင်သော socket အရေအတွက်ကို ကန့်သတ်ပေးသည် |
AUTOTHROTTLE_ENABLED | True | ပစ်မှတ် latency ပေါ် မူတည်၍ crawl delay ကို dynamic အနေဖြင့် အဆင်ပြေအောင် ညှိပေးသည် |
ပမာဏများပြားသော Scrapy crawl များအတွက် အကောင်းဆုံး လုပ်ဆောင်နည်းများ
- သင်၏ VinaProxy proxy စာရင်းကို
from_crawler()တွင် load လုပ်ပြီးprocess_request()အတွင်းrequest.meta['proxy'] = random.choice(self.proxies)ကို သတ်မှတ်ပါ - IP တစ်ခုချင်းစီအလိုက် တောင်းဆိုချက်ကြားကာလများသည် စက်ရုပ်ဆန်ဆန် မဖြစ်စေရန်
DOWNLOAD_DELAY = 1.0နှင့်အတူRANDOMIZE_DOWNLOAD_DELAY = Trueကို ဖွင့်ထားပါ - ထပ်မံကြိုးစားချိန်တွင် (
429သို့မဟုတ်503) တောင်းဆိုချက်ကို queue ထဲ ပြန်မထည့်မီ သင့် pool ထဲမှ အခြား proxy တစ်ခုကို ရွေးချယ်ပါ
အဆင့်ဆင့် လုပ်ဆောင်ရန်
- 1
သင်၏ proxy pool ကို http://user:pass@ip:port အဖြစ် ပုံစံချပါ
URL string များကို ရယူရန် သင်၏ VinaProxy စာရင်းကို ကျွန်ုပ်တို့၏ Proxy Format Converter ထဲသို့ ထည့်သွင်းပါ။
- 2
middlewares.py တွင် ProxyPoolMiddleware တစ်ခု ဖန်တီးပါ
request.meta['proxy'] = random.choice(self.proxies)ကို သတ်မှတ်ရန်process_request(self, request, spider)ကို define လုပ်ပါ။ - 3
settings.py တွင် ဦးစားပေးအဆင့် 740 ဖြင့် မှတ်ပုံတင်ပါ
DOWNLOADER_MIDDLEWARESအောက်တွင်'myproject.middlewares.ProxyPoolMiddleware': 740ကို ထည့်ပြီးCONCURRENT_REQUESTS_PER_IP = 2ကို သတ်မှတ်ပါ။ - 4
scrapy shell သို့မဟုတ် scrapy crawl ဖြင့် စမ်းသပ်ပါ
rotation နှင့် authentication ကို စစ်ဆေးအတည်ပြုရန်
https://vinaproxy.com/api/my-ipသို့ test request တစ်ခု ပို့ပြီး စမ်းသပ်ပါ။
မကြာခဏမေးလေ့ရှိသော မေးခွန်းများ
ကျွန်ုပ်၏ custom Scrapy proxy middleware ကို ဦးစားပေးအဆင့် 800 သတ်မှတ်သောအခါ အဘယ်ကြောင့် အလုပ်မလုပ်သနည်း။
Scrapy ၏ built-in HttpProxyMiddleware သည် ဦးစားပေးအဆင့် 750 တွင် လုပ်ဆောင်သည်။ သင့် middleware သည် 800 (750 ပြီးနောက်) တွင် အလုပ်လုပ်ပါက inline user:pass အထောက်အထားများသည် Proxy-Authorization header အဖြစ်သို့ မည်သည့်အခါမျှ ပြောင်းလဲမည်မဟုတ်ပါ။ သင့် middleware ဦးစားပေးအဆင့်ကို 750 အောက် (ဥပမာ 740) တွင် အမြဲထားရှိပါ။
Scrapy သည် proxy တစ်ခုချင်းစီသို့ persistent connection များကို ဖွင့်ထားပါသလား။
ဟုတ်ပါသည်။ Twisted ၏ connection pool သည် proxy endpoint တစ်ခုချင်းစီအတွက် persistent keep-alive connection များကို ထိန်းသိမ်းထားပေးပါသည်။
စာမျက်နှာ သန်းနှင့်ချီသော Scrapy လုပ်ငန်းများအတွက် VinaProxy proxy များသည် unmetered ဖြစ်ပါသလား။
ဟုတ်ပါသည်။ Dedicated IPv4 နှင့် Static ISP အစီအစဉ်အားလုံးတွင် လစဉ် bandwidth အကန့်အသတ်မရှိ ပါဝင်ပါသည်။
အကန့်အသတ်မဲ့ static IP pool များဖြင့် သင့် Scrapy spider များကို ချဲ့ထွင်ပါ
နိုင်ငံပေါင်း 7 နိုင်ငံရှိ လက်ငင်းအစုလိုက် Dedicated IPv4 နှင့် Static ISP proxy များ။
Scrapy Proxy များကို ဝယ်ယူပါ