response.request.meta መቀየር የPython ነገርን ይቀይራል። ሌላ ማውረድ ለማድረግ Scrapy ሌላ Request እንዲያስይዝ መስጠት አለብዎት።

ተመላሽ ጥሪዎ በግልጽ እንደገና ለመሞከር ለሚወስነው GET፣ የScrapy ይፋዊ የድጋሚ ሙከራ አጋዥ የድጋሚ ሙከራውን ስሌት ከአዲሱ ጥያቄ ጋር ማስቀመጥ ይችላል፦

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

ይህ የሸረሪት አጋዥ ነው። ጠሪው የተገኘውን Request መመለስ ወይም ማቅረብ አለበት። None ማለት አጋዥው በሚመለከተው ገደብ ስር ሌላ ድጋሚ ሙከራ አልተቀበለም ማለት ነው።

የድጋሚ ሙከራ አጋዥው ጥያቄውን ይቀዳል፣ የድጋሚ ሙከራ ቁጥሩን ያዘምናል እና ለድጋሚ ሙከራ ተስማሚ የሆነውን የመርሐግብር ባህሪ ያቀርባል። ተመሳሳዩን URL እንደ ተራ አዲስ ጥያቄ ማቅረብ በምትኩ የተባዛ ማጣሪያ ሊያጋጥመው ይችላል።

በነቃው HttpProxyMiddleware የሚደገፍ የፕሮክሲ URL ይጠቀሙ። ለተፈቀዱ ይፋዊ GET ጥያቄዎች ድጋሚ ሙከራ፣ ከየHTTP ፕሮክሲ ዝርዝር ያልተረጋገጠ HTTP እጩ proxy_url ሊያቀርብ ይችላል። ቀደም ሲል የተያያዘውን proxy-authorization መስክ ማጽዳት የቀድሞ ድርድር ራስጌ ወደዚህ ምርጫ እንዳይተላለፍ ይከላከላል፤ ሚድልዌሩ አዲሱን መለያ ከአዲሱ የፕሮክሲ URL እንዲያወጣ ይተዉት።

ይህን በተመላሽ ጥሪ ደረጃ የተደረገ ምርጫ ከRetryMiddleware ራስ-ሰር አያያዝ ለያዩት። ስራው ሁለት ገለልተኛ በጀቶችን እንዳይወስድ ድጋሚ ሙከራው የትኛው ንብርብር እንደሚያለው ይወስኑ። ምሳሌው እንደገና ሊከናወን ስለሚችል የGET ስራ ነው፣ የዘፈቀደ የቀረበ ግብይት መደገም ደህንነቱ የተጠበቀ ነው የሚል ቃል አይደለም።

ተዛማጅ ጽሑፎች