2013-07-24 2 views
1

Я использую scrapy для выделения некоторых данных, в прошлый раз у меня была проблема в ligne regx. сообщение об ошибке, как это одна:Scrapy: ValueError: вам нужно больше 0 значений для распаковки

** Файл "ProjetVinNicolas3 \ пауков \ nicolas_spider3.py", строка 70, в parse_wine_page

classement, appelation, couleur = res.select('.//div[@class="pro_col_right"]/div[@class="pro_blk_trans"] div[@class="pro_blk_trans_titre"]/text()').re(r'^(\d\w+\s*Vin)\S\s+(\w+-\w+|\w+)\S\s+(\w+)\s*$') 
exceptions.ValueError: need more than 0 values to unpack** 

link program

ответ

1

Вызов .re возвращается ноль -длиный кортеж. Вы не можете выполнить назначение последовательности для n переменных, используя последовательность, которая не имеет ровно длину n.

+0

, когда я пробую эту линию (№ 70) на scrapy shell, она работает, и она дает правильные результаты !!! – xeroxSO

+0

@xeroxSO В этом случае вы используете разные входные данные, чтобы получить 3-кортеж. – Marcin

+0

Благодарим вас за совет, я попробовал поместить каждый var в строку: https://gist.github.com/XeroxGH/6c40ef4fe332c55b636a – xeroxSO

0

Проблема заключается в строке:

classement, appelation, couleur = res.select('.//div[@class="pro_col_right"]/div[@class="pro_blk_trans"]/div[@class="pro_blk_trans_titre"]/text()').re(r'^(\d\w+\s*Vin)\S\s+(\w+\-\w+|\w+)\S\s+(\w+)\s*$') 

Например, выберите возвращает [u'Lussac-Saint-Emilion, Rouge'] и не совпадает с регулярным выражением. См. Эту страницу http://www.nicolas.com/fr/18_409_9394_chateaubelairmagnum.htm - содержимое pro_blk_trans_titre div не вписывается в формат, который вы просите.

Пересмотреть свое регулярное выражение.

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