ວິທີຕັ້ງຄ່າ ແລະ ໝູນວຽນ proxy ໃນ Python Scrapy
Updated:
Twisted engine ແບບ asynchronous ຂອງ Scrapy ມາພ້ອມກັບ HttpProxyMiddleware ໃນຕົວ (ທີ່ priority 750) ເຊິ່ງເຮັດໜ້າທີ່ parse ສະຕຣິງ http://user:pass@ip:port ທີ່ກຳນົດໃຫ້ກັບ request.meta['proxy']. ການຂຽນ Downloader Middleware ແບບກຳນົດເອງພຽງ 10 ແຖວ ທີ່ priority 740 ຈະຊ່ວຍໃຫ້ spider ຂອງທ່ານສາມາດໝູນວຽນຜ່ານ pool ຂອງ VinaProxy static IP ທີ່ບໍ່ຈຳກັດປະລິມານການນຳໃຊ້ໄດ້ໂດຍອັດຕະໂນມັດ.
request.meta['proxy'] = 'http://user:pass@ip:port'- 1 IP₫40.000
- 5+ IP₫35.000
- 10+ IP₫25.000
- 20+ IP₫25.000
- 50+ IP₫25.000
- 100+ IP₫25.000
- 200+ IP₫25.000
- 500+ IP₫25.000
- 1000+ IP₫22.000
- 2000+ IP₫20.000
- 1 IP₫40.000
- 5+ IP₫35.000
- 10+ IP₫25.000
- 20+ IP₫25.000
- 50+ IP₫25.000
- 100+ IP₫25.000
- 200+ IP₫25.000
- 500+ IP₫25.000
- 1000+ IP₫22.000
- 2000+ IP₫20.000
ລຳດັບ Scrapy proxy middleware ແລະ ການຕັ້ງຄ່າ concurrency
ເນື່ອງຈາກ HttpProxyMiddleware ເຮັດວຽກຢູ່ລຳດັບ 750 ເພື່ອຕັດ user:pass ອອກຈາກ proxy URL ແລະ encode ສ່ວນຫົວ Proxy-Authorization, middleware ແບບກຳນົດເອງໃດໆ ທີ່ຕັ້ງຄ່າ request.meta['proxy'] ຈຶ່ງຕ້ອງເຮັດວຽກຢູ່ຕົວເລກທີ່ຕ່ຳກວ່າ (ເຊັ່ນ: 740):
| ການຕັ້ງຄ່າ Scrapy | ຄ່າທີ່ແນະນຳ | ຈຸດປະສົງ |
|---|---|---|
request.meta['proxy'] | 'http://user:pass@ip:port' | ສົ່ງ request ຜ່ານ VinaProxy proxy ທີ່ລະບຸໄວ້ |
| Middleware Priority | 740 (ກ່ອນ 750) | ຮັບປະກັນວ່າ HttpProxyMiddleware ຈະ encode ສ່ວນຫົວ user:pass |
CONCURRENT_REQUESTS_PER_IP | 2 ຫາ 4 | ຈຳກັດຈຳນວນ socket ທີ່ເຮັດວຽກພ້ອມກັນຕໍ່ proxy IP ເພື່ອຫຼີກລ່ຽງ HTTP 429 |
AUTOTHROTTLE_ENABLED | True | ປັບປ່ຽນ crawl delay ແບບໄດນາມິກຕາມ latency ຂອງປາຍທາງ |
ແນວທາງປະຕິບັດທີ່ດີທີ່ສຸດສຳລັບການ crawl ຂໍ້ມູນປະລິມານຫຼາຍດ້ວຍ Scrapy
- ໂຫຼດລາຍຊື່ VinaProxy proxy ຂອງທ່ານໃນ
from_crawler()ແລະ ກຳນົດrequest.meta['proxy'] = random.choice(self.proxies)ພາຍໃນprocess_request() - ເປີດໃຊ້
RANDOMIZE_DOWNLOAD_DELAY = Trueຄວບຄູ່ກັບDOWNLOAD_DELAY = 1.0ເພື່ອບໍ່ໃຫ້ໄລຍະຫ່າງຂອງ request ຕໍ່ IP ເບິ່ງຄືກັບບັອດ - ເມື່ອມີການ retry (
429ຫຼື503), ໃຫ້ເລືອກ proxy ໃໝ່ຈາກ pool ຂອງທ່ານກ່ອນຈະເອົາ request ເຂົ້າ queue ອີກຄັ້ງ
ເທື່ອລະຂັ້ນຕອນ
- 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
ລົງທະບຽນທີ່ priority 740 ໃນ settings.py
ເພີ່ມ
'myproject.middlewares.ProxyPoolMiddleware': 740ໄວ້ກ້ອງDOWNLOADER_MIDDLEWARESແລະ ຕັ້ງຄ່າCONCURRENT_REQUESTS_PER_IP = 2. - 4
ທົດສອບດ້ວຍ scrapy shell ຫຼື scrapy crawl
ສົ່ງ request ທົດສອບໄປທີ່
https://vinaproxy.com/api/my-ipເພື່ອກວດສອບການໝູນວຽນ ແລະ ການຢືນຢັນຕົວຕົນ.
ຄຳຖາມທີ່ຖາມເລື້ອຍໆ
ເປັນຫຍັງ Scrapy proxy middleware ແບບກຳນົດເອງຂອງຂ້ອຍຈຶ່ງເຮັດວຽກບໍ່ສຳເລັດເມື່ອຕັ້ງຄ່າ priority ເປັນ 800?
HttpProxyMiddleware ໃນຕົວຂອງ Scrapy ເຮັດວຽກຢູ່ priority 750. ຖ້າ middleware ຂອງທ່ານເຮັດວຽກຢູ່ 800 (ຫຼັງ 750), ຂໍ້ມູນປະຈຳຕົວ user:pass ຈະບໍ່ຖືກແປງໄປເປັນສ່ວນຫົວ Proxy-Authorization. ຄວນຕັ້ງຄ່າ priority ຂອງ middleware ໃຫ້ຕ່ຳກວ່າ 750 ສະເໝີ (ເຊັ່ນ: 740).
Scrapy ເປີດການເຊື່ອມຕໍ່ແບບ persistent ໄວ້ກັບແຕ່ລະ proxy ຕະຫຼອດເວລາຫຼືບໍ່?
ແມ່ນແລ້ວ. connection pool ຂອງ Twisted ຈະຮັກສາການເຊື່ອມຕໍ່ keep-alive ແບບ persistent ໄວ້ສຳລັບແຕ່ລະ endpoint ຂອງ proxy.
VinaProxy proxy ບໍ່ຈຳກັດປະລິມານການນຳໃຊ້ສຳລັບວຽກ Scrapy ຫຼາຍລ້ານໜ້າຫຼືບໍ່?
ແມ່ນແລ້ວ. ແພັກເກດ Dedicated IPv4 ແລະ Static ISP ທັງໝົດລວມມີ bandwidth ລາຍເດືອນແບບບໍ່ຈຳກັດ.
ຂະຫຍາຍຂະໜາດ Scrapy spider ຂອງທ່ານດ້ວຍ static IP pool ທີ່ບໍ່ຈຳກັດ
Dedicated IPv4 ແລະ Static ISP proxy ຈຳນວນຫຼາຍພ້ອມໃຊ້ງານທັນທີໃນ 7 ປະເທດ.
ຊື້ Scrapy Proxy