2017-10-30 10 views
0

Windows 10のBashOnUbuntyでScrapyを学習しようとしています。genspiderコマンドを使用してスパイダー(yelprest)を作成し、スパイダーファイルを作成して別のスパイダー(quotes_spider) (公式チュートリアルhttps://doc.scrapy.org/en/latest/intro/tutorial.htmlに従ってください)。コマンドプロンプトから常に同じコマンドが実行されています

最初のスパイダーはまだテストされていませんが、2番目のスパイダーでチュートリアルを実行しようとしました。実行しようとすると、最初のスパイダーを指すエラーが発生します。また、バージョンのような他の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

いいえ、ポイントは上記の "scrapy version"コマンドの出力です - 完全に無関係です。私が与えるコマンドについては、私は上記の結果を得ていました。私が与えるすべてのコマンドは、genspiderコマンドで作成した最初のスパイダーを指しています。私はその場所からその特定のクモを取り除きました、そして、私は正常に動作することができます。ドキュメンテーションやフォーラムでは、同じプロジェクトで複数のスパイダーを持つことができるはずです。しかし、私はこの特定の行動についてはっきりしていません。 – Sasi

+0

プロジェクトディレクトリ内でscrapyコマンドを実行すると、ファイルにエラーがあるとクラッシュします。たとえコマンドが関連していなくても。だからこそ私はyelprest.pyにエラーがあると思う。 はい、同じプロジェクトで複数のスパイダーを持つことができます。 – Yall

答えて

0

ファイルyelprest.py(14行目またはそれ以前)にエラーがあります:有効なPythonではありません。このエラーを修正すれば、すべてが機能します。ファイルが正しくインデントされていることを確認し、スペースとタブを混在させないでください。

編集:

ちょうどそれを削除し、エラーがこのファイルにあることを確認します。すべてがこのファイルなしで動作する場合、エラーはそこになければなりません!


更新:

あなたの質問は明確にそれを述べませんが、あなたのコメントによって、あなたの質問は、「なぜScrapyは、すべてのコマンドのための私のクモのコードをロードしますか?」です。そして、答えは:それはScrapyがそれをするために作られたからです。一部のコマンドは、checkまたはcrawlのように、プロジェクト内でのみ実行できます。 startprojectのように、どこかのコマンドをどこでも実行できます。しかし、Scrapyプロジェクトの中では、ANYコマンドはすべてのコードをロードします。治療はこのように行われました。例えば

、私はcrawlerというプロジェクト(私が知っている、非常にわかりやすい!)持っている:それはPythonのエラーとなります

$ 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

関連する問題