При парсинге с помощью XPath не возвращается результат

Пожалуйста, помогите решить проблему. Делаю парсинг цен с сайта. Пример страницы. У цены есть путь XPath

/html/body/div[8]/div/div[2]/div[1]/div[2]/div/div[2]/div[2]/div[2]/div[2]/div[1]/div/span[2]/span[2]

Но после запроса парсера мне приходит пустое значение. На других сайтах подобные пути работают. Поставил плагин XPath helper через него выдаёт следующий результат

/html[@class='bx-core bx-win bx-no-touch bx-no-retina bx-chrome desktop portrait']/body[@class='auth_no widget-on b24-on']/div[@class='main_wrap']/div[@class='shadow_wraper']/div[@class='content_wrap']/div[@class='content_right_wrap goods']/div[@id='bx_117848907_309101']/div/div[@class='catalog_item_wrap']/div[@class='catalog_item sw']/div[@class='catalog_item_right']/div[@class='col-lg-9 col-sx-9 col_mob-full']/div[@class='catalog_price_wrap row sw']/div[@class='catalog_price_desc_wrap col-lg-12 col-xs-12']/span[@class='price']/span[@id='bx_117848907_309101_price']

Если просто скопировать элемент, то он выглядит так:

<span class="price_num xh-highlight" id="bx_117848907_309101_price" data-entity="final-price" data-price="2262" data-currency="RUB" style="font-size: 18px;">2 262 Р</span>

Что я делаю не так? Какой путь дать парсеру?

PS Прошу прощения, не являюсь программистом, но возникла необходимость найти решение этого вопроса. Использую batchurlscraper


Ответы (1 шт):

Автор решения: Ruslan

Можно использовать такой локатор на цену:

//div[@data-entity="price-block"] вставьте в xpath helper, увидите куда он смотрит(смотрит сейчас на весь блок с ценой, и на ту цену, которая зачеркнута в том числе). Локатор только на цену:

//div[@data-entity="price-block"]//span[@class="price_num"]

p.s. старайтесь писать локаторы без длинных лесенок типа: /html/body/div[8]/div/div[2]/div[1]/div[2]/div/div[2]/div[2]/div[2]/div[2]/div[1]/div/span[2]/span[2] если добавят/уберут 1 div из пути, то он станет не актуальным

Советую прочитать статейку для понимания, как писать нормальные локаторы

→ Ссылка