Ինչպես կարգավորել և ռոտացիայի ենթարկել պրոքսիները Python Scrapy-ում
Updated:
Scrapy-ի Twisted ասինխրոն շարժիչը ներառում է ներկառուցված HttpProxyMiddleware (750 առաջնահերթությամբ), որը մշակում է request.meta['proxy']-ին վերագրված http://user:pass@ip:port տողերը: 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-ն աշխատում է 750 կարգով՝ պրոքսի URL-ից user:pass-ը հեռացնելու և Proxy-Authorization վերնագիրը կոդավորելու համար, ցանկացած հատուկ middleware, որը սահմանում է request.meta['proxy'], պետք է աշխատի ավելի ցածր համարով (օրինակ՝ 740).
| Scrapy կարգավորում | Առաջարկվող արժեք | Նպատակ |
|---|---|---|
request.meta['proxy'] | 'http://user:pass@ip:port' | Ուղղորդում է հարցումը նշված VinaProxy պրոքսիի միջոցով |
| Middleware Priority | 740 (before 750) | Ապահովում է, որ HttpProxyMiddleware-ը կոդավորի user:pass վերնագիրը |
CONCURRENT_REQUESTS_PER_IP | 2 to 4 | Սահմանափակում է միաժամանակյա socket-ների քանակը յուրաքանչյուր պրոքսի IP-ի համար՝ HTTP 429-ից խուսափելու նպատակով |
AUTOTHROTTLE_ENABLED | True | Դինամիկ կերպով հարմարեցնում է քրաուլինգի ուշացումը՝ ելնելով նպատակակետի արձագանքման ժամանակից |
Լավագույն փորձառությունները մեծածավալ Scrapy քրաուլինգի համար
- Բեռնեք ձեր VinaProxy պրոքսիների ցանկը
from_crawler()-ում և վերագրեքrequest.meta['proxy'] = random.choice(self.proxies)process_request()-ի ներսում - Ակտիվացրեք
RANDOMIZE_DOWNLOAD_DELAY = TrueկարգավորումըDOWNLOAD_DELAY = 1.0-ի հետ միասին, որպեսզի հարցումների միջակայքերը ըստ IP-ի երբեք ռոբոտացված տեսք չունենան - Կրկնակի փորձի դեպքում (
429կամ503), ընտրեք այլ պրոքսի ձեր փուլից՝ նախքան հարցումը կրկին հերթագրելը
Քայլ առ քայլ
- 1
Ձևաչափեք ձեր պրոքսիների փուլը որպես http://user:pass@ip:port
Տեղադրեք ձեր VinaProxy ցանկը մեր Proxy Format Converter գործիքում՝ URL տողեր ստանալու համար:
- 2
Ստեղծեք ProxyPoolMiddleware middlewares.py-ում
Սահմանեք
process_request(self, request, spider)-ը՝request.meta['proxy'] = random.choice(self.proxies)նշանակելու համար: - 3
Գրանցեք 740 առաջնահերթությամբ settings.py-ում
Ավելացրեք
'myproject.middlewares.ProxyPoolMiddleware': 740DOWNLOADER_MIDDLEWARES-ի տակ և սահմանեքCONCURRENT_REQUESTS_PER_IP = 2: - 4
Փորձարկեք scrapy shell-ով կամ scrapy crawl-ով
Կատարեք թեստային հարցում
https://vinaproxy.com/api/my-ip-ին՝ ռոտացիան և նույնականացումը ստուգելու համար:
Հաճախ տրվող հարցեր
Ինչո՞ւ իմ հատուկ Scrapy պրոքսի middleware-ը ձախողվեց, երբ սահմանված էր 800 առաջնահերթություն:
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 փուլերով
Ակնթարթային մեծածախ Dedicated IPv4 և Static ISP պրոքսիներ 7 երկրներում:
Գնել Scrapy պրոքսիներ