Scrapy CSV ползать - PullRequest
       5

Scrapy CSV ползать

0 голосов
/ 01 февраля 2012

пытаюсь отсканировать несколько строк из файла CSV с помощью CSVFeedSpider Структура файла следующая: id | категория | цена Мне нужно сканировать строки, в которых есть только специальная категория «оплачено» Я делаю следующее:

class Outillage_spider(CSVFeedSpider):
name = 'domain.com'
allowed_domains = ['domain.com', 'www.domain.com']
start_urls = ('http://www.domain.com/file.csv',)

delimiter = ';'
headers = ['name', 'category', 'price']

def parse_row(self, response, row):
    categories = ['Bosch','Dolmar','Fein','Hitachi','Karcher','Leman','Makita','SDMO','Ski']
if row['category'] in categories:
        res = {}
        res['name'] = row['name']
        res['price'] = row['price']
        return load_product(res, response)
    else:
  return None

И следующее, что я получил:

      File "/home/rolikoff/web/scrapy_projects/local/lib/python2.7/site-packages/Scrapy-0.14.1-py2.7.egg/scrapy/contrib/spiders/feed.py", line 129, in parse_rows
    raise TypeError('You cannot return an "%s" object from a spider' % type(ret).__name__)
exceptions.TypeError: You cannot return an "NoneType" object from a spider

Я думаю, что это происходит, когда parse_row () возвращает None. Но я не уверен, как изменить фуктион. У вас есть идеи?

Спасибо Дмитрий

Ответы [ 2 ]

1 голос
/ 01 февраля 2012

Попробуйте вернуть пустое list или tuple вместо None

else:
    return []

И убедитесь, что load_product возвращает list, tuple, Item или Request

1 голос
/ 01 февраля 2012

Насколько я понимаю, вы должны указать поля внутри parse_row!например, это паук, который я сделал для сканирования URL-адресов подкастов: https://github.com/arthurnn/podcast/blob/master/podcast/spiders/itunes_spider.py

Я бы удалил остальное!попробуйте это:

  if row['category'] in categories:
        res = {}
        res['name'] = row['name']
        res['price'] = row['price']
        yield load_product(res, response)

Однако, если вы не используете нормального паука!Для CSVFeedSpider читайте мой Редактировать ниже:

РЕДАКТИРОВАТЬ

В этом случае вы должны вернуть BaseItem, список или кортеж!если вы посмотрите на реализацию CSVFeedSpider http://dev.scrapy.org/browser/scrapy/contrib/spiders/feed.py?rev=1516!вы увидите, что

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...