0

私はこのルールを持っています:

Rule(SgmlLinkExtractor(allow=('http://.*/category/.*/.*/.*',))),
Rule(SgmlLinkExtractor(allow=('http://.*/product/.*', )),cb_kwargs={'crumbs':response.url},callback='parse_item'),

最初の応答を関数 (parse_item) に渡したいのですが、問題は、このコード行で応答が定義されていないというエラーが表示されることです。

最後のルールの応答にアクセスするにはどうすればよいですか?

4

2 に答える 2

3

callbackResponseでのみオブジェクトにアクセスできます。これを試してください:

Rule(SgmlLinkExtractor(allow=r'http://.*/category/.*/.*/.*'), callback='parse_cat', follow=True),
Rule(SgmlLinkExtractor(allow=r'http://.*/product/.*'), callback='parse_prod'),

def parse_cat(self, response):
    crumbs = response.url
    return self.parse_item(response, crumbs)

def parse_prod(self, response):
    crumbs = response.url
    return self.parse_item(response, crumbs)

def parse_item(self, response, crumbs):
    ...
于 2013-04-08T16:32:00.520 に答える