2014-11-09 3 views
0

Это мой код:запрос Scrapy обратного вызова не работает

class AAA(scrapy.Spider): 
    name = 'aaa' 
    start_urls = [ 
     'https://forum.lowyat.net/topic/377400/all' 
    ] 
    COOKIES_ENABLED = False 
    count = 0 
    check = 0 
    item = AAAItem() 
    toDownload = [] 


    def parse(self, response): 
     for sel in response.xpath('//*[@id="contentmiddle"]/div[3]/ol/li'): 
      self.item['name'] = sel.xpath('div/div/div[1]/p[1]/a/text()').extract() 
      self.item['date'] = sel.xpath('div/div/div[2]/p[4]/text()').extract() 
      lastUpdateDate = self.getLastUpdateDate() 
      date_object1 = self.convertToDate(self.item['date'][0]+"") 
      date_object2 = self.convertToDate(lastUpdateDate) 
      if date_object1 <= date_object2: 
       self.haha2(response) 
       self.stopSpider() 
      self.item['link'] = sel.xpath('div/div/div[4]/p[3]/a/@href').extract() 
      self.arrangeDownloadUrl() 
      yield self.item     

    def arrangeDownloadUrl(self): 
     try: 
      downloadUrl = "http://AAA.com"+self.item['link'][0]+"" 
      self.toDownload.append(downloadUrl) 
     except IndexError: 
      print 'file not downloaded, link dead' 

    def haha2(self, response): 
     for i in range (len(self.toDownload)): 
      Request(self.toDownload[i], self.haha3) 

    def haha3(self, response): 
     print 'haha3.................................................................' 


    def stopSpider(self): 
     raise scrapy.exceptions.CloseSpider('done') 


    def getLastUpdateDate(self): 
      date = "Nov 5, 2001 - 1:06 PM" 
      return date 

    def convertToDate(self, value): 
     result = datetime.strptime(value, '%b %d, %Y - %I:%S %p') 
     return result 

    def convertToString(self, value): 
     result = value.strftime("%b %w, %Y - %I:%S %p") 
     return result 

В целях обеспечения конфиденциальности, я должен был изменить URL-адрес страницы. В любом случае проблема заключается в том, что запрос в функции haha2 не выполнен. Запросить обратный вызов, haha3 ... Он не войдет в функцию haha3, если я не назвал это чем-то вроде этого self.haha3(response) ... но это победит цель так как я хочу открыть ссылку и сделать ответ ссылкой, которую я хочу открыть ... любую идею, где я ошибся?

+0

Вы пробовали 'выход Request (...)' (выход его) в haha2? – soooooot

ответ

0

Попробуйте

def haha2(self, response): 
    for i in range (len(self.toDownload)): 
     yield Request(self.toDownload[i], callback=self.haha3) 
Смежные вопросы