@xenofeel

Как составить XPath?

Со страниц, такой как эта нужно извлечь цену в гугловскую таблицу. Составляю xpath
=IMPORTXML ("http://electrozon.ru/catalog/videokarty-i-3d-ochki/90064-Videokarta-PCI-E-ASUS-nVidia-GeForce-GT-210-1024Mb-DDR3-210-SL-TC1GD3-L-Retail.html"; "//strong@class = 'price']")
, который не работает, возвращая ошибку обработки xml. В какую сторону копать?
  • Вопрос задан
  • 3856 просмотров
Решения вопроса 1
glebovgin
@glebovgin
Full Stack Web Developer
В конкретно этом случае проблема не в гугл.таблицах и не в запросе (помимо забытой квадратной скобки - //strong[@class = 'price']), а в том, что HTML-код страницы не может быть обработан как нормальный XML. Есть вариант прогонять страницы через tidy на своем сервере, тогда на выходе будете получать валидный html и легко примените к нему xpath-запросы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
lipatovroman
@lipatovroman
web разработчик, звукорежиссер, водолаз
А если сервер не свой?
Мне надо получать новые версии программ. У меня есть список из адресов - около 2500.
Я начал в Google таблицах с помощью IMPORTXML составлять отдельную колонку, но есть много ошибок.
Например, я снимаю данные со страницы adionsoft.net/fastimageresize
Вот скрин
2018-12-21_19-41-05.jpg
В таблице получаю #N/A
Второй пример, страница https://biblsoft.ru/windows/system/file-managers/7...
Также копирую xpath, но предварительно проверяю страницу на валидность в сервисе https://validator.w3.org
Критических ошибок нет, но в Google таблицах таке получаю #N/A.
И это малая часть ресурсов, с которых данные не снимаются.
Вы и многие пишут про Tidy.
Но как можно применить Tidy прямо в таблицах Google? Это вообще возможно?
Я имею в виду, у нас нет своего сервера и даже хостинга. Мы просто хотим получать и мониторить какой-то отдельный элемент на самых разных сайтах. Адресов может быть множество.
Есть например десктопная программа для mac, называется Dejal Simon.
В ней принцип такой - мы указываем уникальный код до и после проверяемого элемента.
Выглядит это так:
2018-12-21_19-51-25.jpg
Проверка происходит раз в сутки.
Если то, что находится внутри указанного выше кода изменилось, приходит уведомление на почту.
Можно такое внедрить в Google таблицы? Или можно все таки решить проблему с невалидным HTML прямо в Google таблицах?
Извините, что так много текста, но пытался максимально полно объяснить проблематику. Спасибо.

P.S. Кстати, проверил карточку из Google Play - https://play.google.com/store/apps/details?id=com....

Скопировал вот такой xpath - //*[@id="fcxH9b"]/div[4]/c-wiz/div/div[2]/div/div[1]/div/c-wiz[3]/div[1]/div[2]/div/div[4]/span/div/span

Это путь к версии программы. Ни отнять ни добавить. И ничего... В таблице пусто. Хотя по этой же формуле нормально снимаются данные с других сайтов.

В общем нужна помощь с этим вопросом.
Спасибо.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы