2016-06-30 5 views
1

私のxpathセレクタの結果がNoneを返すとき、私はデフォルト値を設定しようとしていました。これは、いくつかのページでxpathノードが存在せず、たとえば 'N/A'または 'Not found'のように設定したい場合に発生します。Scrapyセレクタが返るときにデフォルト値を設定する方法

私は、次のコードを使用するが、私は、これはクリーンで効率的ではないと思います。

value = response.xpath(property.xpath).extract_first() 

if(value != None): 
    data[property.name] = response.xpath(property.xpath).extract_first() 
else: 
    data[property.name] = "N/A" 

任意のアイデア?おかげ

答えて

6

二回クエリを実行する必要はありません、簡単な解決策は、デフォルト値渡しすることです:defaultキーワードを使用せずに独自のコードを書き換えることであれば、今後の参考のため

data[property.name] = response.xpath(property.xpath).extract_first(default='N/A') 

を、一度クエリしてif/elseを使用します:

value = response.xpath(property.xpath).extract_first() 
data[property.name] = value if value else "N/A" 
関連する問題