Athraíonn athrú response.request.meta réad Python. Chun íoslódáil eile a dhéanamh, caithfear Request eile a thabhairt do Scrapy le sceidealú.

Maidir le GET a shocraíonn do callback go sainráite é a athdhéanadh, féadfaidh cúntóir poiblí athdhéanta Scrapy an chuntasaíocht athdhéanta a choinneáil leis an iarratas nua:

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

Cúntóir spider é seo. Caithfidh an glaotóir an Request a eascraíonn a thabhairt ar ais nó a yieldáil nuair a bhíonn ceann ar fáil. Ciallaíonn None gur dhiúltaigh an cúntóir athdhéanadh eile faoin teorainn is infheidhme.

Cóipeálann cúntóir athdhéanta an t-iarratas, nuashonraíonn sé a chuntar athdhéanta agus soláthraíonn sé an t-iompar sceidealta a oireann d’athdhéanadh. Mura ndéanann tú ach an URL céanna a yieldáil mar ghnáth-iarratas nua, d’fhéadfá teacht ar scagadh dúblach ina ionad.

Úsáid URL seachfhreastalaí a thacaíonn an HttpProxyMiddleware cumasaithe leis. Chun athdhéanadh a dhéanamh ar iarratais GET phoiblí cheadaithe, féadfaidh iarrthóir HTTP gan fhíordheimhniú ón liosta seachfhreastalaí HTTP proxy_url a sholáthar. Trí réimse proxy-authorization a bhí ceangailte roimhe seo a ghlanadh seachnaítear ceanntásc seanseachfhreastalaí a iompar isteach sa rogha seo; lig don middleware an cuntas nua a dhíorthú ón URL seachfhreastalaí nua nuair is infheidhme.

Coinnigh an rogha seo ar leibhéal an callback ar leithligh ó láimhseáil uathoibríoch RetryMiddleware ar a chuid teipeanna cumraithe. Socraigh cén ciseal a shealbhaíonn an t-athdhéanadh ionas nach n-ídíonn an oibríocht dhá bhuiséad neamhspleácha. Baineann an sampla le hobair GET is féidir a athimirt, ní le gealltanas go bhfuil athrá idirbhirt chuirthe isteach go treallach sábháilte.

Ailt ghaolmhara