“TypeError:' unicode'在通过scrapy管道进行刮擦时,对象不支持项目分配

时间:2015-10-09 20:03:15

标签: python dictionary unicode scrapy

我正在尝试建立一个关键字词典并将其放入一个scrapy项目中。

'post_keywords':{1: 'midwest', 2: 'i-70',}

关键在于,这将会在以后的路上进入json对象。我首先尝试初始化一个新的空白字典,但这不起作用。

管道代码:

tag_count = 0

for word, tag in blob.tags:
    if tag == 'NN':
        tag_count = tag_count+1
        nouns.append(word.lemmatize())

keyword_dict = dict()

key = 0 
for item in random.sample(nouns, tag_count):
    word = Word(item)
    key=key+1
    keyword_dict[key] = word
    item['post_keywords'] = keyword_dict

档案:

post_keywords = scrapy.Field()

输出:

Traceback (most recent call last):
File "B:\Mega Sync\Programming\job_scrape\lib\site-packages\twisted\internet\defer.py", line 588, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "B:\Mega Sync\Programming\job_scrape\cl_tech\cl_tech\pipelines.py", line215, in process_item
item['post_noun_phrases'] = noun_phrase_dict
TypeError: 'unicode' object does not support item assignment

它看起来像管道行为很奇怪,就像他们不想在管道中运行所有代码一样,除非所有项目分配都检出,这使得我的初始化词典没有被创建或者某些东西。

1 个答案:

答案 0 :(得分:5)

感谢MarkTolonen的帮助。

我的错误是将变量名'item'用于两件以上的事情。

这有效:

for thing in random.sample(nouns, tag_count):
            word = Word(thing)
            key=key+1
            keyword_dict[key] = word
            item['post_keywords'] = keyword_dict