2016-05-16 5 views
0

У меня есть scrapy spider, который сканирует два количества для каждого элемента. Проблема в том, что я должен использовать метод float, поэтому, когда случается, что одно из полей обхода пусто, я получаю сообщение об ошибке, и паук останавливает обход элементов на этой странице и переходит непосредственно на следующую страницу.Scrapy, продолжайте сканирование после ошибки

Есть ли возможность сказать, что скрипит продолжать сканирование после ошибки? Это код моего паука. Благодаря!

def parse(self, response): 
    for sel in response.xpath('//li[@class="oneclass"]'): 
     item = exampleItem() 
     item['quant1'] = float(sel.xpath('a/div/span[@class="exampleclass"]/span[@class="amount"]/text()')) 
     item['quant2'] = float(sel.xpath('div[@class="otherexampleclass"]/input/@max')) 
     yield item 

ответ

3

Вы можете обернуть его в попытке/за исключением блока:

def parse(self, response): 
    for sel in response.xpath('//li[@class="oneclass"]'): 
     try: 
      item = exampleItem() 
      item['quant1'] = float(sel.xpath('a/div/span[@class="exampleclass"]/span[@class="amount"]/text()')) 
      item['quant2'] = float(sel.xpath('div[@class="otherexampleclass"]/input/@max')) 
      yield item 
     except: 
      print "could not crawl {}".format(sel) 
+0

Отлично, это то, что я искал. Я считаю это правильным. – Joe82

Смежные вопросы