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.

Àwọn àpilẹ̀kọ tó jọra