Не зная scrapy, я бы попытался
//li[text()[contains(.,"string2")]]/span/text()
//li[text()[contains(.,"string2")]]
выбрать li
элемент, текст которого содержит string2
/span
выбрать элемент span
ниже выбранного li
/text()
: вернуть текст выбранного элемента диапазона
Обновление: это проще и также должно работать:
//li[contains(text(),"string2")]/span/text()