DrillPipe, в моем результате возвращает "нет данных для импорта". В вашем варианте "Не удалось обработать данные в формате XML". Как я понял, загвоздка в том, что помимо цены, в этом же блоке присутствует тег <i>. А вот как обойти, не понимаю.
P.S. извиняюсь, соврал. Ответ такой же. Сам ошибку допустил.
AVERS, зависит от того инструмента которым вы работаете //span[@class='product-card-price__current']/text() - вернет 2 значения А вот это ( //span[@class='product-card-price__current']/text() )[1] - первое
Превышен допустисый размер вложения. Рисунки удалены [МОДЕРАТОР]
Видимо какя-то проблема с загрузкой. Если выгрузить страницу и проверить количество тегов count(//span/text()) - это вернет 125 значений А если проверить в вашей гугл-таблице - то возращает 36 значений
Нет там проблемы, я на эту тему уже давал ответ. javascript заполняет документ в зависимости от региона, и этого class='product-card-price__current' нет в html страницы Вот так выглядит исходный вид страницы
doober, по умолчанию, в качестве региона, всегда Москва, как я понял. По этому, в качестве примеров теперь только товары, которые без проблем грузит на сайте МСК.
Или качать их прайсы и тягать данные .../files/price/price-moscow.xls Но, обновляют вроде раз в день или того меньше. Город меняет простым GET запросом и работой в сессии - .../ajax/change-city/?city_guid=55506b58-0565-11df-9cf0-00151716f9f5
DrillPipe, спасибо огромное, за помощь и затраченное время. За потраченное время и помощь. В выражении почти ничего не понял, но это работает и знаю куда копать. =)
Oleg Boyaroff написал: Город меняет простым GET запросом и работой в сессии - .../ajax/change-city/?city_guid=55506b58-0565-11df-9cf0-00151716f9f5
Думал тоже о том, что добавив токен к ссылке, можно сменить город на необходимый. Но я в этом прям ноль, вообще не понимаю, как работает. Брал код одной и той же страницы, с разными городами. Код сравнивал, но вытянуть главное не смог, не осилил.
AVERS, все просто //script - выбирает все теги с таким наименованием [contains(text(),’price’)] - предикат (условие фильтрации) , в данном случае выбрать теги у которых в тексте находится price [contains(text(), ‘main-sw-registered’] - предикат, так как тегов script содержащим слово price на странице несколько и мы уточняем, что хотим выбрать из того который содержит второе слово /text() - выбираем только текст
А дальше манипуляции с текстом для отбора нужного значения на картинке в 10 сообщении есть такой текст “price”: 2999,
И функции xpath позволяют отобрать текст до или после интересующего нас текста (знака)
Вы можете посмотреть какой результат возвращает ваш запрос на XPath прямо в консоли Наберите в Chrom например $x("(//script[contains(text(),'price')])") на странице указанной в 1-ом посте
У меня похожая проблема. Куда вставлять это выражение? Как увязать этот код с адресом URL конкретной страниц(ы) Дошел уже до написания скрипта, но не знаю как связать скрипт и адрес URL
Код
function onOpen() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [{name : "Pars",functionName : "MakeMeHappy"}];
sheet.addMenu("Scripts", entries);
};
function MakeMeHappy(){
substring-after(
substring-before(
substring-after(
//script[contains(text(),'price')][contains(text(),'main-sw-registered')]/text(),
'price'),
','),
':')
};