Я пишу простой скребок для получения цен на авиабилеты из Kayak - я собираю несколько элементов данных (продолжительность, авиакомпания, цена и т. Д. c), используя XPath, и сохраняю каждый в списке из 15 значений (# результатов на Страница каяка).
Моя проблема в том, что переменная скребка «цена» возвращает более 15 значений, потому что в дополнение к «лучшему» результату она также извлекает дополнительные отображаемые результаты (см. Скриншот - большой шрифт на RHS и v. . Два предложения в нижнем LHS).
Я сузил проблему до следующего:
1) Общий (рабочий) XPath для получения обоих значений:
'//a[@class="booking-link "]/span[@class="price option-text"]/span[@class = "price-text"]'
2) Ключ к отличию guish основной цены от дополнительной цены лежит в строке @id, где @id для обоих типов цен:
Как мне написать XPath, который извлекает только основные цены, т.е. отфильтровывает любые XPath, которые содержат строку "extra-info" в @id? Я пробовал несколько способов (примеры ниже), но не могу понять, синтаксис правильный. Любая помощь приветствуется, спасибо!
Примеры опробованы:
'//a[@class="booking-link "]/span[@class="price option-text"]/span[@class = "price-text" and not[contains(@id,"extra-info")]]'
'//a[@class="booking-link "]//span[@class="price option-text"]//span[[not[contains(@id,"extra-info")]//span[contains(@id,"-price-text")]]'
'//a[@class="booking-link "]/span[@class="price option-text"]/span[len(@id==33)]'
введите описание изображения здесь