Ailgynnig GET Scrapy drwy brocsi arall
Defnyddiwch gymorth ailgynnig Scrapy i drefnu cais newydd gyda phrocsi newydd gan barchu'r gyllideb ailgynnig.
Mae newid response.request.meta yn newid gwrthrych Python. I lawrlwytho eto, rhaid rhoi Request arall i Scrapy i'w drefnu.
Ar gyfer GET y mae eich callback yn penderfynu'n benodol ei ailgynnig, gall cymorth ailgynnig cyhoeddus Scrapy gadw'r cyfrif ailgynnig gyda'r cais newydd:
from scrapy.downloadermiddlewares.retry import get_retry_request
def retry_through(self, response, proxy_url):
retry = get_retry_request(
response.request,
spider=self,
reason='choose_another_proxy',
)
if retry is None:
return None
retry.meta['proxy'] = proxy_url
retry.headers.pop('Proxy-Authorization', None)
return retry
Cymorth pry cop yw hwn. Rhaid i'r galwr ddychwelyd neu yieldio'r Request sy'n deillio pan fydd ar gael. Mae None yn golygu bod y cymorth wedi gwrthod ailgynnig arall o fewn y terfyn perthnasol.
Mae'r cymorth ailgynnig yn copïo'r cais, yn diweddaru ei gyfrif ailgynnig ac yn darparu ymddygiad y trefnydd sy'n briodol ar gyfer ailgynnig. Gall yieldio'r un URL fel cais newydd cyffredin daro hidlo dyblygiadau yn lle hynny.
Defnyddiwch URL procsi a gefnogir gan yr HttpProxyMiddleware sy'n weithredol. Ar gyfer ailgynnig ceisiadau GET cyhoeddus a ganiateir, gall ymgeisydd HTTP heb ei ardystio o'r rhestr procsi HTTP ddarparu proxy_url. Mae clirio maes proxy-authorization a atodwyd yn gynharach yn osgoi cario pennawd cyfryngwr hen i'r dewis hwn; gadewch i'r middleware ddeillio'r cyfrif newydd o URL y procsi newydd pan fo'n berthnasol.
Cadwch y dewis hwn ar lefel callback ar wahân i driniaeth awtomatig RetryMiddleware o'i fethiannau wedi'u ffurfweddu. Penderfynwch pa haen sy'n berchen ar yr ailgynnig fel nad yw'r llawdriniaeth yn defnyddio dwy gyllideb annibynnol. Mae'r enghraifft yn ymwneud â gwaith GET y gellir ei ailchwarae, nid addewid bod ailadrodd trafodiad a gyflwynwyd yn fympwyol yn ddiogel.