scrapy-proxy-pool: trin ymatebion deuaidd wrth ganfod gwaharddiadau
Cyfyngu gwiriad patrwm testun scrapy-proxy-pool i TextResponse tra'n cadw penderfyniadau statws a chorff gwag.
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.