Как правильно спарсить характеристики?

  • Автор темы Автор темы remkolseg99
  • Дата начала Дата начала

remkolseg99

Пользователь
Регистрация
24.01.2021
Сообщения
31
Реакции
0
Баллы
6
Подскажите люди добрые, куда копать!)

Есть сайт с подобными характеристиками
83411


Необходимо спарсить характеристики и каждое значение положить свою ячейку.
Проблема возникает при парсинге следующих карточек товаров (то значения перемешаются то данные не находит)

Понимаю что дело в путях xpath, уже перебрал все дерева элементов, да так и не удалось правильно заставить собирать данные
 
Начни копать с нормального оформления вопроса.
Могу тебе также задать аналогичный вопрос: у меня в кармане конфета. Она шоколадная или нет? Помоги понять.

Приведи урл страницы.
 
  • Оценить
Реакции: remkolseg99
Начни копать с нормального оформления вопроса.
Могу тебе также задать аналогичный вопрос: у меня в кармане конфета. Она шоколадная или нет? Помоги понять.

Приведи урл страницы.
Учту!
ссылка
 
Последнее редактирование:
Пример как искать:
//td/span[contains(text(),'Вес')]/parent::td//following-sibling::td/span
 
  • Оценить
Реакции: remkolseg99
Благодарю! Все работает
 
Я лошара в xPath, но вот самый простой вариант что в голову пришел.
 

Вложения

  • 2021-09-28_17-54-51.png
    2021-09-28_17-54-51.png
    201,9 KB · Просмотры: 172
  • 2021-09-28_17-55-28.png
    2021-09-28_17-55-28.png
    204,1 KB · Просмотры: 177
  • Оценить
Реакции: remkolseg99
Пример как искать:
//td/span[contains(text(),'Вес')]/parent::td//following-sibling::td/span
Вы написали решения! Мне бы самому разобраться. Можно вас попросить откомментить данный код или посоветовать чего бы почитать по данной теме
 
Я лошара в xPath, но вот самый простой вариант что в голову пришел.

Этот вариант не подойдет т.к. от от карточки к карточки, набор характеристик меняется

а собирать сплошным текстом не вариант
 
  • Оценить
Реакции: remkolseg99
Вы написали решения! Мне бы самому разобраться. Можно вас попросить откомментить данный код или посоветовать чего бы почитать по данной теме
Второй вариант тоже рассмотри, можно все сложить в 2 списка и уже потом раскидывать.
Мой вариант только для тех характеристик которые нужны и известны.

Коммент:
Ищешь узел с текстом "Вес". Т.к. это таблица, то нужно найти родителя этого узла (на 1 уровень выше), дальше ищешь соседний узел который следует после, дальше ищешь его внутренний узел с нужным текстом.

Посмотри иерархию и все станет понятно.
 
  • Оценить
Реакции: remkolseg99
Этот вариант не подойдет т.к. от от карточки к карточки, набор характеристик меняется

а собирать сплошным текстом не вариант
Я бы делал именно предложенным вариантом выше. Добавив номер элемента, который хочешь взять.

(//td[@class='char_name'])[1]

таким образом возьмешь не сплошным текстом, а только первую строку имени

По этой же аналогии забираешь значение из первой строчки.

Вместо единицы в путь вставляешь переменную. Когда забрал имя и значение из первой строчки и записал в нужном виде, увеличиваешь счетчик на 1 и берешь значения из второй строчки. Зацикливаешь все это дело до тех пор пока новую строчку не найдет. Это значит что перебрали все имена со всеми значениями.

Пишу с телефона. Не тестил. Должно работать. Если не работает, то принцип описал
 
  • Оценить
Реакции: remkolseg99

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)