ImportXML - xpathquery для класса span - PullRequest
0 голосов
/ 13 апреля 2019

Я пытаюсь использовать функцию ImportXML для импорта цены (5,99 $) следующего веб-сайта в мой лист Google.

Я могукажется, не идентифицирует имя класса на сайте, чтобы он работал.В настоящее время, используя следующее как мой xpath_query://div[@class='']

, я не могу получить правильный xpath_query, чтобы указать на $ 5,99, используя функцию importXML.Любая помощь приветствуется, спасибо!

1 Ответ

0 голосов
/ 14 апреля 2019

Я не знаю, что можно получить доступ к информации о цене с помощью IMPORTXML, потому что я считаю, что данные о ценах нужно искать каждый раз, когда страница загружается, после некоторого копания я наткнулся на эту страницу, просматривая страница:

Found the price here

При поиске цены используется очень легко предсказуемый (и, следовательно, легко конструируемый) URL. URL в основном выглядит примерно так:

https://redsky.target.com/web/pdp_location/v1/tcin/[8 цифры] ? Pricing_store_id = [4 цифры] & ключ = [32 буквенно-цифровых символа]

Итак, 32 символа в конце - это какой-то ключ, который, я думаю, похож на ключ, который можно использовать для доступа к API. Я думаю, что этот ключ используется для программы, вызывающей запрашиваемую информацию. 4 числа в середине - это своего рода идентификационный номер магазина. Я думаю, что это каким-то образом используется для получения информации о ценах для конкретного магазина. И, возможно, самое главное - эти 8 цифр в начале этого URL. Я думаю, что эти 8 цифр являются идентификационной информацией продукта. Это что-то вроде номера sku.

Теперь я провел некоторое тестирование и нашел очень простое решение, которое в большинстве случаев выполнит работу без использования каких-либо пользовательских функций или сценариев.

Мы можем легко построить URL для поиска цены, основываясь только на URL продукта на веб-странице. 8-значный идентификатор продукта для поиска цены представляет собой 8-значную строку в конце URL-адреса, который вы указали (и, как правило, этот шаблон одинаков для любой страницы продукта).

Что касается идентификационного номера магазина (4 цифры), похоже, что мы действительно можем установить для него практически любое значение, и оно будет работать, поэтому для моего примера я установлю его на 0000.

А теперь для этого 32 ключа на конце. Я попытался без параметра ключа ("& key = [key]"), и я получил ошибку, в которой говорится, что параметр ключа является обязательным. Однако, по какой-то неизвестной причине, я попробовал то же самое еще раз, но я включил ("& key =") в URL (просто без фактического ключа), и он РАБОТАЛ! Это привело меня к правильной странице.

Итак, подведем итог, нам просто нужен номер продукта, который мы можем получить по URL (или любому URL на Target.com).

Теперь в Sheets мы можем импортировать данные с этого ценового URL с помощью вызова IMPORTDATA (обратите внимание, что IMPORTXML не будет работать в этом случае). Когда мы делаем это, мы получаем что-то вроде этого:

Imported Data

Это вернет множество столбцов с различной ценовой информацией. В этом примере я предполагаю, что нас интересует цена «current_retail», поскольку она соответствует цене в вашем сообщении.

Отсюда, чтобы получить только цену, выведенную в виде строки, мы можем использовать функцию INDEX и удалить заголовок с чем-то вроде SUBSTITUTE. Если мы хотим, чтобы вывод интерпретировался как число, нам просто нужно использовать для этого функцию VALUE.

Вот окончательный результат:

Table

И вот единственная функция, которая питает все это:

=VALUE(SUBSTITUTE(INDEX(IMPORTDATA("https://redsky.target.com/web/pdp_location/v1/tcin/"&RIGHT(A2,8)&"?pricing_store_id=0000&key="),,5),"current_retail:",""))

Мы даем ему ввод (URL-адрес продукта), и он выводит цену в виде числа. Это будет работать и с другими продуктами. Однако иногда возникают проблемы с продуктами, которые, как представляется, имеют несколько цен, например, для вариантов с разным размером и тому подобное. В этих случаях массив, возвращаемый IMPORTDATA, выглядит немного иначе, что означает, что функция INDEX может не получать правильные данные о цене. Может быть решение для вывода правильной цены, но это выходит за рамки этого ответа.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...