Gall PDF neu ddelwedd gyrraedd yn llwyddiannus drwy ddirprwy ac yna methu yng nghanfod gwaharddiadau. Mae Response sylfaenol Scrapy yn datgelu beitiau'r corff, ond mae ei briodwedd text yn codi gwall “Response content isn't text.”

Os yw polisi scrapy-proxy-pool sydd wedi'i osod yn chwilio response.text yn ddiamod, disodlwch y polisi hwnnw â fersiwn sy'n ystyried y math:

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

Dewiswch ef drwy osodiad estyniad y pecyn:

PROXY_POOL_BAN_POLICY = "myproject.policy.BinaryAwarePolicy"

Mae hyn yn cadw rheolau statws a chorff gwag y polisi tra'n cyfyngu'r chwiliad testun i ymatebion sy'n ei gefnogi. Mae'r polisi eithriadau etifeddol yn parhau ar gael.

Adolygwch y rheolau sy'n weddill ar gyfer y cymhwysiad hefyd: nid yw ymateb 200 sy'n wag yn fwriadol nac ystyr cyrchfan arferol yn brawf di-os o ddirprwy gwael. Cadwch y middleware yn weithredol a newidiwch y dosbarthiad a achosodd y methiant, yn lle analluogi pob canfod gwaharddiad ar gyfer lawrlwythiadau deuaidd.

Erthyglau cysylltiedig