2011-10-23 8 views
1

私は、スパイダーのstart_urls変数の異なるURLの "最大深度"設定を変更するためにScrapy 0.12を取得しようとしています。異なる深さの複数の開始URLをクロールする

ドキュメントを正しく理解していれば、DEPTH_LIMITの設定はフレームワーク全体でグローバルであり、「最初のものからのリクエスト」という概念はないため、方法はありません。

これを回避する方法はありますか?同じスパイダーの複数のインスタンスを、開始URLごとに異なる深さ制限で初期化することは可能ですか?

答えて

1

申し訳ありませんが、私は最初から正しく質問しているようには思えませんでした。私の答えを訂正:

応答depthmetaのキーがあります。これを確認して適切な処置をとることができます。それが始まるURLかからの要求によって生成されたが、知っているに応じから簡単な方法はありませんので、動作しないでしょう

class MySpider(BaseSpider): 

    def make_requests_from_url(self, url): 
     return Request(url, dont_filter=True, meta={'start_url': url}) 

    def parse(self, response): 
     if response.meta['start_url'] == '???' and response.meta['depth'] > 10: 
      # do something here for exceeding limit for this start url 
     else: 
      # find links and yield requests for them with passing the start url 
      yield Request(other_url, meta={'start_url': response.meta['start_url']}) 

http://doc.scrapy.org/en/0.12/topics/spiders.html#scrapy.spider.BaseSpider.make_requests_from_url

+0

は今、私はそれについて考える、多分それはなんとかなら最初の瞬間から1以上のメタ['深さ']を持っています。私はコードを見てみる –

+0

答えを変更しました – warvariuc

関連する問題