2013-08-14 4 views
0

마지막 질문에서 충분히 명확하지 않다는 것을 알고 있기 때문에 새로운 질문을하고 있습니다. 나는 자습서를 따르려고 노력하고 있지만 중요한 단계 인 "scrap crawl dmoz"명령에 붙어 있습니다. 코드는이 코드입니다 (파이썬 셸에서 작성한 내용이며 .py 확장) :치료 자습서 : 치료 크롤링을 실행할 수 없습니다. dmoz

ActivePython 2.7.2.5 (ActiveState Software Inc.) based on 
Python 2.7.2 (default, Jun 24 2011, 12:20:15) 
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin 
Type "copyright", "credits" or "license()" for more information. 
>>> from scrapy.spider import BaseSpider 

class dmoz(BaseSpider): 
    name = "dmoz" 
    allowed_domains = ["dmoz.org"] 
    start_urls = [ 
     "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/", 
     "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/" 
    ] 

    def parse(self, response): 
     filename = response.url.split("/")[-2] 
     open(filename, 'wb').write(response.body) 

>>> 

내가 괜찮을 사용하고 디렉토리 트리를 검색 :

. 
├── scrapy.cfg 
└── tutorial 
    ├── __init__.py 
    ├── __init__.pyc 
    ├── items.py 
    ├── pipelines.py 
    ├── settings.py 
    ├── settings.pyc 
    └── spiders 
     ├── __init__.py 
     ├── __init__.pyc 
     └── dmoz_spider.py 

2 directories, 10 files 

을 지금은 "scapy 크롤링 DMOZ"나는이 얻을 실행하려고하면

$ scrapy crawl dmoz 

2013-08-14 12:51:40+0200 [scrapy] INFO: Scrapy 0.16.5 started (bot: tutorial) 
2013-08-14 12:51:40+0200 [scrapy] DEBUG: Enabled extensions: LogStats, TelnetConsole, CloseSpider, WebService, CoreStats, SpiderState 
Traceback (most recent call last): 
    File "/Library/Frameworks/Python.framework/Versions/2.7/bin/scrapy", line 5, in <module> 
    pkg_resources.run_script('Scrapy==0.16.5', 'scrapy') 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pkg_resources.py", line 499, in run_script 
    self.require(requires)[0].run_script(script_name, ns) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pkg_resources.py", line 1235, in run_script 
    execfile(script_filename, namespace, namespace) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Scrapy-0.16.5-py2.7.egg/EGG-INFO/scripts/scrapy", line 4, in <module> 
    execute() 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Scrapy-0.16.5-py2.7.egg/scrapy/cmdline.py", line 131, in execute 
    _run_print_help(parser, _run_command, cmd, args, opts) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Scrapy-0.16.5-py2.7.egg/scrapy/cmdline.py", line 76, in _run_print_help 
    func(*a, **kw) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Scrapy-0.16.5-py2.7.egg/scrapy/cmdline.py", line 138, in _run_command 
    cmd.run(args, opts) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Scrapy-0.16.5-py2.7.egg/scrapy/commands/crawl.py", line 43, in run 
    spider = self.crawler.spiders.create(spname, **opts.spargs) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Scrapy-0.16.5-py2.7.egg/scrapy/command.py", line 33, in crawler 
    self._crawler.configure() 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Scrapy-0.16.5-py2.7.egg/scrapy/crawler.py", line 40, in configure 
    self.spiders = spman_cls.from_crawler(self) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Scrapy-0.16.5-py2.7.egg/scrapy/spidermanager.py", line 35, in from_crawler 
    sm = cls.from_settings(crawler.settings) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Scrapy-0.16.5-py2.7.egg/scrapy/spidermanager.py", line 31, in from_settings 
    return cls(settings.getlist('SPIDER_MODULES')) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Scrapy-0.16.5-py2.7.egg/scrapy/spidermanager.py", line 22, in __init__ 
    for module in walk_modules(name): 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Scrapy-0.16.5-py2.7.egg/scrapy/utils/misc.py", line 65, in walk_modules 
    submod = __import__(fullpath, {}, {}, ['']) 
    File "/Users//Documents/tutorial/tutorial/spiders/dmoz_spider.py", line 1 
    ActivePython 2.7.2.5 (ActiveState Software Inc.) based on 
       ^
SyntaxError: invalid syntax 

아무도 내가 밟고있는 단계가 무엇인지 잘못 알고 있습니까? 도움 주셔서 감사합니다. 이것은 제 첫 번째 프로그래밍 경험이므로 매우 어리석은 문제 일 수 있습니다.

답변

0

들여 쓰기가 올바르지 않습니다. 그것은해야한다 :

>>>from scrapy.spider import BaseSpider 

>>>class dmoz(BaseSpider): 
     name = "dmoz" 
     allowed_domains = ["dmoz.org"] 
     start_urls = [ 
      "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/", 
      "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/" 
     ] 

     def parse(self, response): 
      filename = response.url.split("/")[-2] 
      open(filename, 'wb').write(response.body) 

난 당신이 IDLE의 코드를 붙여 복사 생각하십시오 들여 쓰기 클래스입니다.

+0

사실 저는 했는데도 여전히 '잘못된 구문'오류가 발생합니다 ... 그밖에 무엇이있을 수 있습니까? – user2668703

+0

들여 쓰기를 위해 4 칸을 사용 했습니까? 이 스크립트를 실행하기 위해 어떤 도구를 사용하고 있습니까? ideone.com에 코드를 붙여넣고 공유하십시오. 도움이 될 것입니다. – user1787687

+0

또 다른 오타였습니다. ideone.com에 대한 도움과 제안에 너무 감사드립니다. – user2668703

1

그것은 들여 쓰기 문제가 아니에요, 오류 메시지는 분명하다 :

File "/Users//Documents/tutorial/tutorial/spiders/dmoz_spider.py", line 1 
ActivePython 2.7.2.5 (ActiveState Software Inc.) based on 
      ^
SyntaxError: invalid syntax 

당신은 명확 사본이 더 코드없는 유휴에서 시작하는 문자열을 포함 IDLE의 코드를 붙여 있습니다.

복사 붙여 넣기 대신 편집기를 열고 실제 튜토리얼 코드를 입력하면 더 잘 배우고 실수로 붙여 넣기하지 않을 것입니다.