私はscrapyで作業しています。私はで始まるクモがあります。AttributeError: 'Spider'オブジェクトに 'table'という属性がありません
class For_Spider(Spider):
name = "for"
# table = 'hello' # creating dummy attribute. will be overwritten
def start_requests(self):
self.table = self.dC# dc is passed in
をI次のパイプラインがあります。
class DynamicSQLlitePipeline(object):
@classmethod
def from_crawler(cls, crawler):
# Here, you get whatever value was passed through the "table" parameter
table = getattr(crawler.spider, "table")
return cls(table)
def __init__(self,table):
try:
db_path = "sqlite:///"+settings.SETTINGS_PATH+"\\data.db"
db = dataset.connect(db_path)
table_name = table[0:3] # FIRST 3 LETTERS
self.my_table = db[table_name]
は、私はクモを開始します。
scrapy crawl for -a dc=input_string -a records=1
を私が取得:
AttributeError: 'For_Spider' object has no attribute 'table'
「表」のコメントを外すと、プログラムは始める。私はなぜ 'テーブル'が動作するのか混乱していますが、self.tableは動作しません。誰かがこれを説明できますか?
ありがとうございます。私はクラス属性とインスタンス属性について混乱していると思います。私は彼らが本質的に同じだと思った。 – user61629
また、実際には、パイプラインにアクセス可能なテーブル変数を動的に設定するために、コマンドラインから 'table'パラメータを渡したいと思います。 – user61629