scrapy-proxy-pool: ṣiṣe àkóso àwọn ìdáhùn binary nínú wíwá ìdínà
Dín ìyẹ̀wò àwòrán ọ̀rọ̀ scrapy-proxy-pool mọ́ TextResponse nígbà tí o bá ń pa àwọn ìpinnu ipò àti ara òfo mọ́.
PDF tàbí àwòrán lè dé lọ́nà àṣeyọrí nípasẹ̀ proxy kí ó sì kùnà nínú wíwá ìdínà. Response ìpìlẹ̀ Scrapy ń fi àwọn body bytes hàn, ṣùgbọ́n ẹ̀yà text rẹ̀ ń mú àṣìṣe “Response content isn't text.” wá.
Tí ètò scrapy-proxy-pool tí a fi sórí ẹ̀rọ bá ń wá response.text láìsí ipò, rọ́pò ètò yẹn pẹ̀lú ẹ̀dà tí ó mọ irú:
from scrapy.http import TextResponse
from scrapy_proxy_pool.policy import BanDetectionPolicy
class BinaryAwarePolicy(BanDetectionPolicy):
def response_is_ban(self, request, response):
if isinstance(response, TextResponse):
if self.BANNED_PATTERN.search(response.text):
return True
if response.status not in self.NOT_BAN_STATUSES:
return True
return response.status == 200 and not response.body
Yàn án nípasẹ̀ ètò àfikún ti àkópọ̀:
PROXY_POOL_BAN_POLICY = "myproject.policy.BinaryAwarePolicy"
Èyí ń pa àwọn òfin ipò àti ara òfo ti ètò náà mọ́, ó sì ń dín wíwá ọ̀rọ̀ mọ́ àwọn ìdáhùn tí ó ṣe àtìlẹ́yìn fún un. Ètò ìyọkùrò tí a jogún ṣì wà.
Yẹ àwọn òfin tó kù yẹn wò fún ohun èlò pẹ̀lú: ìdáhùn 200 tí ó ṣófo lọ́nà àìmọ̀ọ́mọ̀ tàbí àṣìṣe ibi-ìlọ déède kì í ṣe ẹ̀rí proxy búburú nígbà gbogbo. Fi middleware sílẹ̀ lọ́nà àìṣeéṣe, kí o sì yí ìpín tí ó fa ìkùnà náà padà, dípò pípa gbogbo wíwá ìdínà fún àwọn ìgbàsílẹ̀ binary.