2015-03-01 3 views
0

с помощью Scrapy Я хочу извлечь некоторые данные с веб-сайтов. Это мой раздел для разбора:Регулярное выражение с помощью Scrapy/Python

item['title'] = sel.xpath('//div[@class="box"]/h3/text()').extract() 
item['date'] = sel.xpath('//div[@class="date"]/text()').extract() 
item['text'] = sel.xpath('//span[@class="usercontent"]/p/text()').extract() 

Это прекрасно работает по назначению. Тем не менее, я хочу ограничить второй элемент только датами с регулярным выражением (\d\d\.\d\d\.\d\d\d\d). Я следую руководству и пишу это:

item['date'] = sel.xpath('//div[@class="date"]/text()').re(r'\d\d\.\d\d\.\d\d\d\d').extract() 

Таким образом, это не сработает. Я получаю следующую ошибку:

Error caught on signal handler: bound method ?.close_spider of scrapy.contrib.feedexport.FeedExporter object at...

Регулярное выражение работает очень хорошо, если я тестирую его с помощью Shell. Любые советы по этому поводу? Большое спасибо! Я использую Windows 7, 64 бит, Python 2.7.

ответ

2

Это просто, что вам не нужно вызывать extract() после re() с момента re() возвращает список из Юникода строк:

item['date'] = sel.xpath('//div[@class="date"]/text()').re(r'\d\d\.\d\d\.\d\d\d\d') 
Смежные вопросы