如何在Scrapy的ItemLoader中使用输出处理器对列表进行排序?

时间:2014-04-25 11:52:13

标签: python sorting scrapy

我想从网站上获取一些文本,对其进行标记并返回文本中所有单词的有序列表。除了排序之外我能做的一切。我想可以使用项目中字段的输出处理器(ItemLoader)来完成,但我无法使其工作。 这是代码:

from scrapy.contrib.loader import ItemLoader
from scrapy.contrib.loader.processor import TakeFirst, MapCompose, Join
from w3lib.html import replace_escape_chars, remove_tags
from nltk.corpus import stopwords
import string

from newsScrapy.items import NewsItem

class NewsLoader (ItemLoader):

    def filterStopWords(x):
        return None if x in stopwords.words('english') or x=='' else x

    default_item_class = NewsItem

    body_in = MapCompose(lambda v: v.split(), lambda v: v.strip(string.punctuation).strip(), lambda v: v.lower(), filterStopWords, replace_escape_chars)

'''字段从网站获取报废数据,它被标记化并且标点符号与其他次要任务一​​起被删除。有了它,它返回一个单词列表。我只想对那份清单进行排序。 非常感谢!

1 个答案:

答案 0 :(得分:0)

我终于通过带有

的ItemPipeline完成了它
def process_item(self, item, spider):
    return sorted(item['body'])