0

BaseSpiderまたはInitSpiderから継承する時期について、人々が質問しているSOについて多くの質問を見てきました。

スティッキークッキーをスクレイプに設定する

class TestSpider(InitSpider):
    ...
    rules = (Rule(SgmlLinkExtractor(allow=('products/./index\.html', )), callback='parse_page'),)

    def init_request(self):
        return Request(url = self.init_url, callback=self.parse_js)

BaseSPiderには「ルール」オプションがないことを確認しましたが、peoleはまだそれを書いています。

自分が間違っているかどうか知りたい

質問の中でこれについて言及しているシニアメンバーも見たことがありません

4

1 に答える 1

0

さまざまな種類のスパイダーのソースコードに基づいて、次のことが当てはまると結論付けることができます。

ルールを実装します。

  • CrawlSpider(Ruleクラスは17行目から28行目で定義され、32行目のCrawlSpiderクラスにデータメンバーとして追加されています)

ルールを実装しません:

誰かがCrawlSpider以外のスパイダーでルールを定義したすべての例のためにこれについて確信が持てない場合は、次の行に沿ってcallback1ステートメントを参照し、持つルールを作成することでこれをテストできます。callback1

print "We're in callback1 so the rule must work"

非CrawlSpiderスパイダーを実行したときにそのステートメントが表示された場合は、ルールが実装されていることがわかります。

于 2012-12-15T18:18:51.957 に答える