2017-10-30 8 views
0

Windows 10에서 BashOnUbunty에서 Scrapy를 배우려고합니다. genspider 명령을 사용하여 스파이더 (yelprest)를 만든 다음 스파이더 파일을 만들어 다른 스파이더 (quotes_spider)를 직접 만들었습니다. (공식 자습서 https://doc.scrapy.org/en/latest/intro/tutorial.html을 따름).명령 프롬프트에서 항상 동일한 명령을 실행하는 치료

첫 번째 스파이더는 아직 테스트되지 않았지만 두 번째 스파이더와 함께 튜토리얼을 살펴 보았습니다. 실행하려고하면 첫 번째 스파이더를 가리키는 오류가 발생합니다. 또한 버전과 같은 다른 scrapy 명령을 실행하려고하면 위와 같은 오류가 발생합니다. 다음은 오류입니다.

(BashEnv) root > scrapy version 
Traceback (most recent call last): 
    File "/mnt/s/BashEnv/bin/scrapy", line 11, in <module> 
    sys.exit(execute()) 
    File "/mnt/s/BashEnv/local/lib/python2.7/site-packages/scrapy/cmdline.py", line 148, in execute 
    cmd.crawler_process = CrawlerProcess(settings) 
    File "/mnt/s/BashEnv/local/lib/python2.7/site-packages/scrapy/crawler.py", line 243, in __init__ 
    super(CrawlerProcess, self).__init__(settings) 
    File "/mnt/s/BashEnv/local/lib/python2.7/site-packages/scrapy/crawler.py", line 134, in __init__ 
    self.spider_loader = _get_spider_loader(settings) 
    File "/mnt/s/BashEnv/local/lib/python2.7/site-packages/scrapy/crawler.py", line 330, in _get_spider_loader 
    return loader_cls.from_settings(settings.frozencopy()) 
    File "/mnt/s/BashEnv/local/lib/python2.7/site-packages/scrapy/spiderloader.py", line 61, in from_settings 
    return cls(settings) 
    File "/mnt/s/BashEnv/local/lib/python2.7/site-packages/scrapy/spiderloader.py", line 25, in __init__ 
    self._load_all_spiders() 
    File "/mnt/s/BashEnv/local/lib/python2.7/site-packages/scrapy/spiderloader.py", line 47, in _load_all_spiders 
    for module in walk_modules(name): 
    File "/mnt/s/BashEnv/local/lib/python2.7/site-packages/scrapy/utils/misc.py", line 71, in walk_modules 
    submod = import_module(fullpath) 
    File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
    File "/mnt/s/BashEnv/Scrapy/Scrapy/spiders/yelprest.py", line 14 
    rules = (
    ^
IndentationError: unexpected indent 
(BashEnv) root > 

내가 제공하는 명령에 대해 동일한 오류가 나타나는 이유를 알지 못합니다.

+0

그것은 파이썬 오류로 보인다. IndentationError는 yelprest.py 파일에 문제가 있음을 의미합니다. 파일이 정확하게 들여 쓰기되어 있습니까? 탭과 스페이스를 섞어 봤어? – Yall

+0

아니요, 요점은 위의 "치료 버전"명령의 출력입니다 - 완전히 관련이 없습니다. 내가주는 모든 명령에 대해 위의 결과를 얻었습니다. 모든 명령은 genspider 명령으로 만든 첫 번째 거미를 가리 킵니다. 그 위치에서 그 거미를 옮겼고 정상적으로 달릴 수 있습니다. 나는 문서/포럼에서 동일한 프로젝트에서 여러 개의 거미를 가질 수 있어야한다고 봅니다. 그러나 나는이 특정한 행동에 대해 명확하지 않다. – Sasi

+0

프로젝트 디렉토리에서 scrapy 명령을 실행하면 파일에 오류가있는 경우 충돌이 발생합니다. 명령이 관련이없는 경우에도. 그래서 나는 그 오류가 yelprest.py에 있다고 생각한다. 예, 동일한 프로젝트에서 여러 개의 거미를 가질 수 있습니다. – Yall

답변

0

yelprest.py 파일 (14 번째 또는 이전 버전)에 오류가 있습니다. 유효한 Python이 아닙니다. 이 오류를 수정하면 모든 것이 작동합니다. 파일이 올바르게 들여 쓰기되었는지 확인하고 공백과 탭을 함께 사용하지 마십시오.

편집 :

그냥 삭제, 오류가이 파일에 있는지 확인합니다. 이 파일이 없어도 모든 것이 작동하면 오류가 있어야합니다!


업데이트 :

귀하의 질문이 명확하게 명시하지 않지만, 당신의 코멘트에 의해 귀하의 질문에 "왜 Scrapy 모든 명령에 대한 내 거미 코드를로드합니까?"입니다. 그리고 그 대답은 : 치료가 그것을하기 때문에 만들어졌습니다. 일부 명령은 check 또는 crawl과 같이 프로젝트 내에서만 실행할 수 있습니다. 그리고 일부 명령은 startproject과 같이 어디서나 실행할 수 있습니다. 하지만 Scrapy 프로젝트에서 ANY 명령은 모든 코드를로드합니다. 치료는 이렇게 만들었습니다.

예를 들어, 나는 프로젝트가 crawler라는 이름의이 (매우 설명, 나도 알아!) :

$ cd ~ 
$ scrapy version 
Scrapy 1.4.0 
$ cd crawler/ 
$ scrapy version 
2017-10-31 14:47:42 [scrapy.utils.log] INFO: Scrapy 1.4.0 started (bot: crawler) 
2017-10-31 14:47:42 [scrapy.utils.log] INFO: Overridden settings: {...} 
Scrapy 1.4.0 
+0

올바른지 확인한 들여 쓰기 오류를 가리 킵니다. 하지만 내 쿼리는이 스파이더를 실행하려고했던 이유입니다. 심지어 내가 가리키고 있지 않아도 (예전 버전 명령을 실행했습니다). – Sasi

+0

내 업데이트로 답변을 제공합니까? – Djunzu

+0

이제는 의미가 있습니다. 감사 Djunzu! – Sasi