របៀបដំឡើង និងបង្វិល proxy នៅក្នុង Python Scrapy
Updated:
Twisted engine អសមកាលកម្មរបស់ Scrapy រួមបញ្ចូល HttpProxyMiddleware ភ្ជាប់មកជាមួយស្រាប់ (នៅអាទិភាព 750) ដែលញែកខ្សែអក្សរ http://user:pass@ip:port ដែលបានកំណត់ទៅកាន់ request.meta['proxy']។ ការសរសេរ Downloader Middleware ផ្ទាល់ខ្លួនត្រឹមតែ 10 បន្ទាត់នៅអាទិភាព 740 អនុញ្ញាតឱ្យ spider របស់អ្នកបង្វិលឆ្លាស់គ្នានៅលើ pool នៃ static IP របស់ VinaProxy ដែលមិនកំណត់ទំហំទិន្នន័យដោយស្វ័យប្រវត្តិ។
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 proxy middleware និងការកំណត់ចំនួនដំណើរការដំណាលគ្នា
ដោយសារ HttpProxyMiddleware ដំណើរការនៅលំដាប់ 750 ដើម្បីដក user:pass ចេញពី proxy URL និងធ្វើកូដកម្ម header Proxy-Authorization នោះ middleware ផ្ទាល់ខ្លួនណាមួយដែលកំណត់ request.meta['proxy'] ត្រូវតែដំណើរការនៅលេខទាបជាង (ឧទាហរណ៍ 740)៖
| ការកំណត់ Scrapy | តម្លៃដែលបានណែនាំ | គោលបំណង |
|---|---|---|
request.meta['proxy'] | 'http://user:pass@ip:port' | បញ្ជូនសំណើតាមរយៈ proxy VinaProxy ដែលបានបញ្ជាក់ |
| អាទិភាព Middleware | 740 (មុន 750) | ធានាថា HttpProxyMiddleware ធ្វើកូដកម្ម header user:pass |
CONCURRENT_REQUESTS_PER_IP | 2 ទៅ 4 | កំណត់កម្រិតអតិបរមានៃ socket ដំណាលគ្នាក្នុងមួយ proxy IP ដើម្បីជៀសវាង HTTP 429 |
AUTOTHROTTLE_ENABLED | True | កែសម្រួលការពន្យារពេល crawl តាមបែបឌីណាមិកដោយផ្អែកលើ latency គោលដៅ |
ការអនុវត្តល្អបំផុតសម្រាប់ការ crawl ទិន្នន័យច្រើនក្នុង Scrapy
- ផ្ទុកបញ្ជី proxy VinaProxy របស់អ្នកក្នុង
from_crawler()ហើយកំណត់request.meta['proxy'] = random.choice(self.proxies)នៅខាងក្នុងprocess_request() - បើកដំណើរការ
RANDOMIZE_DOWNLOAD_DELAY = TrueរួមជាមួយDOWNLOAD_DELAY = 1.0ដើម្បីកុំឱ្យចន្លោះពេលសំណើក្នុងមួយ IP មើលទៅដូចជា bot - នៅពេលព្យាយាមឡើងវិញ (
429ឬ503) សូមជ្រើសរើស proxy ផ្សេងពី pool របស់អ្នក មុនពេលដាក់សំណើចូលក្នុងជួរឡើងវិញ
មួយជំហានម្តងៗ
- 1
ធ្វើទ្រង់ទ្រាយ proxy pool របស់អ្នកជា 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': 740នៅក្រោមDOWNLOADER_MIDDLEWARESហើយកំណត់CONCURRENT_REQUESTS_PER_IP = 2។ - 4
សាកល្បងជាមួយ scrapy shell ឬ scrapy crawl
ដំណើរការសំណើសាកល្បងទៅកាន់
https://vinaproxy.com/api/my-ipដើម្បីផ្ទៀងផ្ទាត់ការបង្វិល និងការផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវ។
សំណួរដែលសួរញឹកញាប់
ហេតុអ្វីបានជា Scrapy proxy middleware ផ្ទាល់ខ្លួនរបស់ខ្ញុំបរាជ័យនៅពេលកំណត់អាទិភាព 800?
HttpProxyMiddleware ភ្ជាប់មកជាមួយរបស់ Scrapy ដំណើរការនៅអាទិភាព 750។ ប្រសិនបើ middleware របស់អ្នកដំណើរការនៅ 800 (ក្រោយ 750) នោះព័ត៌មានសម្ងាត់ user:pass នឹងមិនត្រូវបានបម្លែងទៅជា header Proxy-Authorization ឡើយ។ ត្រូវកំណត់អាទិភាព middleware របស់អ្នកឱ្យនៅក្រោម 750 ជានិច្ច (ដូចជា 740)។
តើ Scrapy រក្សាការតភ្ជាប់ជាប់រហូត (persistent connection) ទៅកាន់ proxy នីមួយៗដែរឬទេ?
បាទ/ចាស។ Connection pool របស់ Twisted រក្សាការតភ្ជាប់ keep-alive ជាប់រហូតសម្រាប់ endpoint របស់ proxy នីមួយៗ។
តើ proxy របស់ VinaProxy មិនកំណត់ទំហំទិន្នន័យសម្រាប់ការងារ Scrapy រាប់លានទំព័រមែនទេ?
បាទ/ចាស។ គម្រោង Dedicated IPv4 និង Static ISP ទាំងអស់រួមបញ្ចូលកម្រិតបញ្ជូនប្រចាំខែដោយមិនកំណត់។
ពង្រីកទំហំ Scrapy spider របស់អ្នកជាមួយ static IP pool មិនកំណត់ទិន្នន័យ
Proxy Dedicated IPv4 និង Static ISP ជាកញ្ចប់ភ្លាមៗនៅទូទាំង 7 ប្រទេស។
ទិញ Scrapy Proxy