2016-06-10 3 views
1

나는 치료법과 몽고 밥을 함께 사용하는 방법을 배우기 위해 this tutorial을 따르고 있습니다. 그러나 계속해서 다음과 같은 오류 메시지가 표시됩니다.치료 파이프 라인을 디버깅하는 방법?

[Anaconda2] C:\Users\Segovia\Dropbox\stack>scrapy crawl stack 
Traceback (most recent call last): 
    File "c:\users\segovia\anaconda2\lib\runpy.py", line 162, in _run_module_as_main 
    "__main__", fname, loader, pkg_name) 
    File "c:\users\segovia\anaconda2\lib\runpy.py", line 72, in _run_code 
    exec code in run_globals 
    File "C:\Users\Segovia\Anaconda2\Scripts\scrapy.exe\__main__.py", line 9, in <module> 
    File "c:\users\segovia\anaconda2\lib\site-packages\scrapy\cmdline.py", line 108, in execute 
    settings = get_project_settings() 
    File "c:\users\segovia\anaconda2\lib\site-packages\scrapy\utils\project.py", line 60, in get_project_settings 
    settings.setmodule(settings_module_path, priority='project') 
    File "c:\users\segovia\anaconda2\lib\site-packages\scrapy\settings\__init__.py", line 285, in setmodule 
    self.set(key, getattr(module, key), priority) 
    File "c:\users\segovia\anaconda2\lib\site-packages\scrapy\settings\__init__.py", line 260, in set 
    self.attributes[name].set(value, priority) 
    File "c:\users\segovia\anaconda2\lib\site-packages\scrapy\settings\__init__.py", line 55, in set 
    value = BaseSettings(value, priority=priority) 
    File "c:\users\segovia\anaconda2\lib\site-packages\scrapy\settings\__init__.py", line 91, in __init__ 
    self.update(values, priority) 
    File "c:\users\segovia\anaconda2\lib\site-packages\scrapy\settings\__init__.py", line 317, in update 
    for name, value in six.iteritems(values): 
    File "c:\users\segovia\anaconda2\lib\site-packages\six.py", line 599, in iteritems 
    return d.iteritems(**kw) 
AttributeError: 'list' object has no attribute 'iteritems' 

누군가가 잘못되었을 수 있음을 알 수 있습니까? 아니면 누군가 디버깅하는 방법에 대한 힌트를 줄 수 있습니까? 나는 scrapy 공식 문서에 제공된 '구문 분석'방법을 시도했지만 나에게 도움이되지 못했습니다. 이를 디버깅하려면 IDE를 사용하고 이러한 코드에 '들어가서'무슨 일이 벌어지고 있는지 확인할 수 있기를 바랍니다. 감사!

ITEM_PIPELINES = ['stack.pipelines.MongoDBPipeline', ] 

MONGODB_SERVER = "localhost" 
MONGODB_PORT = 27017 
MONGODB_DB = "stackoverflow" 
MONGODB_COLLECTION = "questions" 

그리고 'mongod는'다른 cmd를 윈도우에서 실행되고 확신 :

settings.py 파일은 이러한 라인을 가지고있다. 오류에

+0

프로젝트 설정도 게시 할 수 있습니까? 감사. – alecxe

+0

@alecxe, 나는 질문을 편집했다. 이게 니가 필요한거야? – user3768495

답변

4

살펴 보자 : 프로젝트 설정의이 부분에서

AttributeError: 'list' object has no attribute 'iteritems'

:

ITEM_PIPELINES = ['stack.pipelines.MongoDBPipeline', ]

그리고이 documentation page에서

.

Scrapy는 ITEM_PIPELINES이 사전이면서 목록을 제공 할 것으로 예상합니다. 해결 방법 :

ITEM_PIPELINES = {'stack.pipelines.MongoDBPipeline': 300} 
+0

그것이 효과가있다! 놀랄 만한! 정말 감사! BTW, 문제는 settings.py 파일에 있다는 것을 어떻게 알았습니까? 나는 그것이 '__init__.py'파일에 있을지도 모른다고 생각했지만, 파일을 열면 내부는 비어 있습니다. 이 '__init__.py'는 무엇을합니까? – user3768495

+0

@ user3768495 솔직히 말해서, 내가 추적 결과를 보았을 때이 정확한 오류를 의심하고 'iteritems'속성이없는 'list'객체가 있는데, 그것은 오랫동안 'ITEM_PIPELINES'가 목록이었던 것을 기억하고 있기 때문입니다. 미래에 사전이 될 것이고 현재는 사전임을 경고하는 비추천입니다. 나는 추적 결과가 정확히 어디에서 발생했는지에 대해서는별로 도움이되지 않는다는 것을 이해하지만, 여전히 단서가있다.이 설정은 get_project_settings() 호출을 참조한다. 이것은 설정을 읽는 동안 오류가 발생했다는 것을 알려준다. – alecxe

+0

@ user3768495 또한 치료는 오픈 소스임을 유의하십시오. 언제든지 코드를 살펴볼 수 있습니다. 추적 코드의 추적은 [github repo] (https://github.com/scrapy/scrapy)입니다. 희망이 도움이됩니다. – alecxe

관련 문제