2016-07-27 10 views
-1

私はPythonには全く新しく、私はScrapyを使用しようとしているWebスクレイピングに関する夏季の実践的なプロジェクトをやっています。これまで私はhttp://doc.scrapy.org/en/1.1/intro/tutorial.htmlを使用していましたが、チュートリアルのスパイダーが意図したとおりに動作しないため、私は即興しなければなりませんでした。私は、チュートリアルのコードをコピーして、このエラーが生じ、それに即興しようとしたOSはwin7のScrapy NameError:名前 'filename'が定義されていません

です:

File ..\spiders\dmoz_spider.py", line 16 in DmozSpider with open(filename, 
'wb') as f: 
NameError: name 'filename' is not defined 

コードは次のとおりです。

import scrapy 

class DmozSpider(scrapy.Spider): 
    name = "turo" 
    allowed_domains = ["turotarjoo.com"] 
    start_urls = [ 
     "http://turotarjoo.com/siipiravintola/", 
     "http://turotarjoo.com/info/" 
    ] 

def parse(self, response): 
    filename = None 
    filename = response.url.split("/")[-1] + '.html' 
    with open(filename, 'wb') as f: 
     f.write(response.body) 

私の場合はあなたの助けと申し訳ありませんありがとう最初の質問は読みにくいです。 PythonプログラマーやWebスクレイピングを開始するためのヒントがあれば教えてください。

+2

このコードからエラーが発生していないことは間違いありません。 –

+0

あなたのインデントは、あなたの実際のコードに合っているか、一貫していますか? 'parse'は(' self'の使用のために) 'DmozSpider'のメソッドであるように見えましたが、書かれているように、あなたはモジュールレベルの関数を持っています。また、空白とタブを混ぜていないことを確認する必要があります( 'python -tt script.py') – mgilson

+0

モジュールレベルであれば' self'について文句を言います。 – TigerhawkT3

答えて

-1
import scrapy 
class DmozSpider(scrapy.Spider): 
    name = "turo" 
    allowed_domains = ["turotarjoo.com"] 
    start_urls = [ 
     "http://turotarjoo.com/siipiravintola/", 
     "http://turotarjoo.com/info/" 
    ] 

    def parse(self, response): 
     filename = response.url.split("/")[-1] + '.html' 
     with open(filename, 'wb') as f: 
      f.write(response.body) 

私だけインデントを固定し、それが正常に動作しているようです。このコードを試すことができますか?

+1

ありがとう、ありがとうそれはインデントをチェックすることによって動作し、スペースとタブが混在していました(これは私が知りませんでしたが、私の友人は私を助けました)。 – Suinelas

関連する問題