2013-05-30 27 views
8

Bazı sayfaları taramak için Scrapy kullanıyorum. Start_urls'u bir excel sayfasından alıyorum ve url'i öğeye kaydetmem gerekiyor.sculum'da orijinal start_url (yönlendirme öncesi) nasıl edinilir

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 

sorun url diğer bazı url yönlendirilir (ve dolayısıyla tepki url başka bir şey verir) olur olmasıdır. Excel'den aldığım orijinal url'yi nasıl alabilirim?

+0

"response.request.url" ifadesini denediniz mi? – alecxe

+0

@alecxe: evet, bunu da denedim, bana yeniden yönlendirilen URL'yi aldım, aynı url'den aldım.url –

cevap

16

response.request.meta['redirect_urls']'da neye ihtiyacınız olduğunu bulabilirsiniz. docs den

Alıntı:

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

Umut yardımcı olur.

+0

Awesome! çalıştı, çok teşekkürler! –

+0

@alecxe Herhangi bir fikriniz var mı? Response.request.meta ['redirect_urls'] 'scrapy kabuğunda çalışabilir, ancak bir' exceptions.KeyError: 'redirect_urls' 'komut dosyası içinde kullanıldığında? Yönlendirmenin 'response.url' – AdO

+0

@AdO'nun kullanım-vakasına özgü olduğunu, yeni bir ayrı soru oluşturabileceğini ve tüm detayları sağlayabileceğimi, bana buradan bir bağlantı atabileceğimi, bir bakacağımı biliyorum. Teşekkürler! – alecxe