2016-05-11 10 views
1

私はURLのリストを解析しています。いくつかの値の条件で結果のURLを保存することを避けたいと思います。私のコードは次のようなものです:Scrapy:条件項目値で歩留まり要求を防止する方法

start_urls = [www.rootpage.com] 
def parse(self,response): 
    item = CreatedItem() 
    url_list = response.xpath('somepath').extract() 
    for url in url_list: 
     request = scrapy.Request(item['url'],callback=self.parse_article) 
     request.meta['item'] = item 
     yield request 

def parse_article(self,response): 
    item = response.meta['item'] 
    item['parameterA'] = response.xpath('somepath').extract() 
    yield item 

今、私はケース項目[「parameterA」]で条件に従うことをしたい、「降伏要求」(このURLには貯蓄が発生しないように)する必要はありません。私は、条件のように追加してみました:

if item['parameterA'] == 0: 
     continue 
    else: 
     yield item 

をしかし期待通りscrapyは、要求が実行される前であっても、ループを続けるためには、動作しません。

+0

あなたが 'parameterA'を取得する唯一の方法は要求することですか? – alecxe

+0

はい、そのURLの下にあるものを「参照」しなければならないため、保存するかどうかを決定します。 – Miguel

答えて

1

私が理解から、あなたはparse_articleメソッド内で決定を下す必要があります。

def parse_article(self,response): 
    item = response.meta['item'] 
    item['parameterA'] = response.xpath('somepath').extract_first() 

    if item['parameterA'] != "0": 
     yield item 

extract_first()の使用と0前後に引用符に注意してください。

+0

ああ、もちろん!ありがとう! – Miguel

関連する問題