Проблема, с которой вы столкнулись, заключается в том, что id 'accordionContent5e95408f73b10' генерируется динамически. Итак, id в вашем браузере и ответ scrapy разные.
В обычных случаях есть хороший обходной путь для написания xpath с помощью «поиска по подстроке» (//*[contains(@id, 'accordionContent')]
), но в этом случае таких идентификаторов много.
Я могу посоветовать написать более сложный XPath.
//div[@id='accordion']/div[contains(@class, 'panel')][1]/div[contains(@id, 'accordionContent')]/div[@class='panel-body']/table/tbody/tr[1]/td
Что делает этот xpath:
Найти все «подпанели» с описаниями //div[@id='accordion']/div[contains(@class, 'panel')]
;
Мы получить первую «подпанель» (где находится PZN) и перейти к таблице с данными: //div[@id='accordion']/div[contains(@class, 'panel')][1]/div[contains(@id, 'accordionContent')]/div[@class='panel-body']/table
;
И последняя часть извлекает td первого tr.
Кстати, xpath можно упростить до //div[@id='accordion']/div[contains(@class, 'panel')][1]//table/tbody/tr[1]/td
. Но я написал полный xpath для более точного понимания того, что мы делаем.