我的蜘蛛需要在一定程度上适应我正在抓取的网站,因为我需要获取的信息有时在 div[1] 中,有时在 div[2] 中。这是一个例子:
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 从其中一个语句中获取我?
最佳答案
尝试一下:
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
希望它对您有用。
关于python - scrapy xpath 如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16946342/