2016-03-03 28 views
1

我刮的頁面的列表保持的請求的軌道,我有如何scrapy

start_urls = ['page_1_id', 'page_2_id', 'page_1_2', 'page_3_id'] 

現在,當我做了刮,如果頁面存在,網址改變它,當我嘗試:

response.url 

response.request 

我不明白

'page_1_id', 'page_2_id', 'page_1_2', 'page_3_id' 

因爲scrapy使得異步請求我需要'id'來匹配數據,所以我需要的是通過'id;在每個請求的說法,我thougtht列表

start_urls = ['page_1_id', 'page_2_id', 'page_1_2', 'page_3_id'] 

id = ['id_1','id_2','id_3'] 

但在有問題的,首先我不知道怎麼打發這個參數,第二它不會工作,因爲我不要了已經提出要求。所以我可能會需要使用一本字典,有一種方法可以讓這樣的事情:

start_urls = {'page_1_id':id_1, 'page_2_id':id_2, 'page_1_3':id_3, 'page_4_id':id_4} 

我的蜘蛛很簡單,我只需要得到一個鏈接,該ID回:

def parse(self, response): 


    myItem = Item() 
    myItem = Item(link=response.xpath('//*[@id="container"]/div/table/tbody/tr[1]/td/h4[1]/a/@href').extract()) 

    return myItem 

只需要添加的 '身份證'

高清解析(個體經營,響應):

myItem = Item() 
myItem = Item(link=response.xpath('//*[@id="container"]/div/table/tbody/tr[1]/td/h4[1]/a/@href').extract(),id) 

return myItem 

回答

1

您可以覆蓋如何廢料y通過重寫start_requests()方法開始產生請求。似乎你想這樣做,然後把這個id在request.meta屬性中攜帶它到parse回調。例如:

start_urls = ['page_1_id', 'page_2_id', 'page_1_2', 'page_3_id'] 

def start_requests(self): 
    for url in self.start_urls: 
     yield scrapy.Request(url, 
          meta={'page_id': url.split('_',1)[-1] # 1_id}) 

def parse(self, response): 
    print(response.meta['page_id']) 
    # 1_id