假设我有这段代码:
def parse(self, response)
l = ItemLoader(item=MyItem(), response=response
l.add_xpath('title', '//*[@id="title"]/text()', MapCompose(str.strip, str.title)
l.add_xpath('price', '//*[@id="price"]/text()', MapCompose(lambda i: i.replace(',', ''), float), re = '[,.0-9]')
return l.load_item()
我想检查是否找不到元素,在这种情况下设置一个默认值为l.add_value
,例如(我试过这样做):
if l.add_xpath('price', '//*[@id="price"]/text()', MapCompose(lambda i: i.replace(',', ''), float), re = '[,.0-9]'):
l.add_value('available', 1)
else:
l.add_value('price', 0)
l.add_value('available', 0)
但我得到了奇怪的结果(see discussion here) 有任何想法可以实现吗?
提前致谢。
答案 0 :(得分:2)
ItemLoader
的来源是here。 add_xpath
方法不会返回任何内容(默认情况下会返回None
,因此您的if
语句将始终为False
)。
似乎有get_xpath
方法似乎可以执行您想要的操作(检查元素是否存在)。