Я пытаюсь следовать this tutorial.Почему мои процессоры ввода/вывода в Scrapy не работают?
Я хочу, чтобы мое поле desc
было единственной строкой, нормированной на отдельные пробелы и в верхнем регистре.
dmoz_spider.py
import scrapy
from tutorial.items import DmozItem
class DmozSpider(scrapy.Spider):
name = "dmoz"
allowed_domains = ["dmoz.org"]
start_urls = [
"http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
"http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
]
def parse(self, response):
for sel in response.xpath('//ul/li'):
item = DmozItem()
item['title'] = sel.xpath('a/text()').extract()
item['link'] = sel.xpath('a/@href').extract()
item['desc'] = sel.xpath('text()').extract()
yield item
Я попытался декларирование ввода/вывода процессоров в соответствии с http://doc.scrapy.org/en/latest/topics/loaders.html#declaring-input-and-output-processors
items.py
import scrapy
from scrapy.loader.processors import MapCompose, Join
class DmozItem(scrapy.Item):
title = scrapy.Field()
link = scrapy.Field()
desc = scrapy.Field(
input_processor=MapCompose(
lambda x: ' '.join(x.split()),
lambda x: x.upper()
),
output_processor=Join()
)
Однако, мой выход по-прежнему оказывается, как это.
{'desc': ['\r\n\t\r\n ',
' \r\n'
'\t\t\t\r\n'
' - By David Mertz; Addison Wesley. '
'Book in progress, full text, ASCII format. Asks for feedback. '
'[author website, Gnosis Software, Inc.]\r\n'
' \r\n'
' ',
'\r\n '],
'link': ['http://gnosis.cx/TPiP/'],
'title': ['Text Processing in Python']}
Что я делаю неправильно?
Я использую Python 3.5.1 и Scrapy 1.1.0
Я терплю весь свой код здесь: https://github.com/prashcr/scrapy_tutorial, так что вы можете попытаться изменить его, как вы хотите.
Что вы ожидаете, что это произойдет? –
Я ожидал, что поле 'desc' будет выглядеть так:" - BY DAVID MERTZ, ADDISON WESLEY. КНИГА В ПРОГРЕССЕ, ПОЛНЫЙ ТЕКСТ, ФОРМАТ ASCII. ЗАДАЕТСЯ ДЛЯ ОБРАТНОЙ СВЯЗИ. [АВТОРСКИЙ ВЕБ-САЙТ, ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ GNOSIS, INC.] " –