2013-05-30 9 views
8

मैं कुछ पृष्ठों को क्रॉल करने के लिए स्केपर का उपयोग कर रहा हूं। मैं एक्सेल शीट से start_urls लाता हूं और मुझे आइटम में यूआरएल को सहेजने की ज़रूरत है।स्क्रैप में मूल start_url कैसे प्राप्त करें (रीडायरेक्ट से पहले)

class abc_Spider(BaseSpider): 
    name = 'abc' 
    allowed_domains = ['abc.com']   
    wb = xlrd.open_workbook(path + '/somefile.xlsx') 
    wb.sheet_names() 
    sh = wb.sheet_by_name(u'Sheet1') 
    first_column = sh.col_values(15) 
    start_urls = first_column 
    handle_httpstatus_list = [404] 

    def parse(self, response): 
     item = abcspiderItem() 
     item['url'] = response.url 

समस्या यह है कि यूआरएल कुछ अन्य यूआरएल के लिए पुनः निर्देशित हो जाता है (और इस प्रकार की प्रतिक्रिया यूआरएल में कुछ और ही देता है) है। मैं एक्सेल से प्राप्त मूल यूआरएल कैसे प्राप्त करूं?

+0

क्या आपने 'response.request.url' की कोशिश की है? – alecxe

+0

@alecxe: हाँ, उसने भी कोशिश की, मुझे फिर से रीडायरेक्ट यूआरएल मिला, वही यूआरएल मुझे प्रतिक्रिया से मिला। Url –

उत्तर

16

आप response.request.meta['redirect_urls'] में जो भी चाहते हैं उसे ढूंढ सकते हैं। docs से

उद्धरण:

The urls which the request goes through (while being redirected) can be found in the redirect_urls Request.meta key.

आशा है कि मदद करता है।

+0

बहुत बढ़िया! वह काम किया, बहुत बहुत धन्यवाद! –

+0

@alecxe क्या आपको कोई विचार है कि 'response.request.meta ['redirect_urls'] 'स्केपर खोल में क्यों काम कर सकता है लेकिन एक स्क्रिप्ट में उपयोग किए जाने पर' अपवाद। KeyError: 'redirect_urls'' फेंक देता है? मुझे पता है कि रीडायरेक्ट 'respond.url' – AdO

+0

@ एडीओ को देखने-केस केस की तरह लगता है, क्या आप एक नया अलग प्रश्न बना सकते हैं और सभी विवरण प्रदान कर सकते हैं, मुझे यहां एक लिंक फेंक दें, मैं एक नज़र डालूंगा। धन्यवाद! – alecxe

संबंधित मुद्दे