2013-06-05 86 views
2

我的蜘蛛需要適應一些網站,我需要抓取的信息有時在div [1]和其他時間在div [2]。這裏有一個例子:Scrapy xpath如何

item['details'] = site.select('//*[@id="detailFacts"]/div[2]/div[2]//text()').extract() 

item['details'] = site.select('//*[@id="detailFacts"]/div[1]/div[2]//text()').extract() 

如何合併這兩個在一個單一的語句,以便scrapy從這些無論是取我嗎?

回答

2

試用一下這個:

details = site.select('//*[@id="detailFacts"]/div[1]/div[2]//text()|//*[@id="detailFacts"]/div[2]/div[2]//text()').extract() 
item['details'] = next(s for s in details if s) # getting first not-empty item from the list 

details = site.select('//*[@id="detailFacts"]/div[1]|div[2]/div[2]//text()').extract() 
item['details'] = next(s for s in details if s) # getting first not-empty item from the list 

希望它爲你工作。

+0

非常感謝,這些工作很棒。 – user818190