Для first xpath //*[@class="dataContainer"]/a/@href
//
- это ось потомка или самого себя, тогда как /
является прямым потомком текущего узла.В этом случае a
не является прямым ребенком, поэтому вам нужно использовать //
:
//*[@class="dataContainer"]//a/@href
second path //*[@class="tableLight"]
должен работать, но если вы знаете, что этотег tr
используйте его:
//tr[@class="tableLight"]
А для третий xpath //*[local-name() = "tr" and class="tableLight"]
class
является атрибутом, поэтому вам нужно использовать @class
(но я бы предложилвместо этого используйте приведенный выше xpath):
//*[local-name() = "tr" and @class="tableLight"]
Что касается того, что вам нужно (UrlOne1, UrlOne2, DataOne1, DataOne, DataOne2
), вы можете получить элементы a
, например, response.xpath('//tr[@class="tableLight"]//a')
, а затем получить атрибут href
илитекст для каждого элемента a
.
Или непосредственно получите атрибуты href
и текст:
//tr[@class="tableLight"]//a/@href
//tr[@class="tableLight"]//a//text()