我正在尝试建立一个关键字词典并将其放入一个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
它看起来像管道行为很奇怪,就像他们不想在管道中运行所有代码一样,除非所有项目分配都检出,这使得我的初始化词典没有被创建或者某些东西。
答案 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