Как я могу извлечь два или три «параллельных» XPath на веб-странице в формат, который можно импортировать в электронную таблицу?

Как я могу извлечь два или три «параллельных» XPath на веб-странице в формат, который можно импортировать в электронную таблицу?

Вот пример: https://www.amazon.co.uk/s?rh=n%3A20606777031&language=en_GB&brr=1&pf_rd_i=3012216031&pf_rd_m=A3P5ROKL5A1OLE&pf_rd_p=7accc6fa-9287-4d54-804e-88e159 . c5cb45&pf_rd_r=P0TZ793D83HJK8616YKC&pf_rd_s=поиск товаров-top-2&pf_rd_t=101&rd=1&ref=uk_outsbcd_1 для большинства товаров указана фактическая цена и рекомендованная розничная цена. Я хотел бы извлечь все цены, а также рекомендованную розничную цену в нечто, что можно будет использовать в электронной таблице.

Уродливый XPath для получения RRP

      /html/body/div[1]/div[2]/div[1]/div[1]/div/span[1]/div[1]/div[11]/div/div/div/div/div[2]/div[3]/div/a/div/span[2]/span[2]/text()

и получить (недесятичную часть) цены

      /html/body/div[1]/div[2]/div[1]/div[1]/div/span[1]/div[1]/div/div/div/div/div/div[2]/div[3]/div/a/span/span[2]/span[2]/text()

Название продукта:

      /html/body/div[1]/div[2]/div[1]/div[1]/div/span[1]/div[1]/div/div/div/div/div/div[2]/div[1]/h2/a/span

Если я выполню эти XPath с помощью $x, разверните результат, щелкните правой кнопкой мыши по результату здесь (это снимок экрана с консоли в Firefox):

и выберитеCopy message(в Firefox) я получаю что-то похожее на это:


при вставке в текстовый редактор.

Мне бы хотелось, чтобы выходные данные были в формате, который требовал бы меньше постобработки, прежде чем я смогу вставить их в электронную таблицу. Более того, если я получу много (100+? 1000+?) результатов, Firefox не перечислит их все.

В качестве первого шага я бы хотел

      Array(39) [ #text, #text, #text, #text, #text, #text, #text, #text, #text, #text, … ]
​
0: #text "2"
​
1: #text "7"
​
2: #text "8"

чтобы выглядеть так:

      2
7
8

То есть только числа/результаты, по одному в каждой строке (которые я затем могу вставить в электронную таблицу, по одному столбцу для каждого XPath, и имя будет соответствовать цене и рекомендованной розничной цене).

Следующим шагом будет создание файла csv/tsv со всем включенным, что-то вроде:

      prod1,2,7
prod2,7,11
prod3,8,14

(Я предпочитаю табуляцию запятой, но здесь я использовала запятую, потому что так было понятнее)

В электронной таблице это будет выглядеть так:

Как я могу это сделать? Я представляю себе решение Javascript, которое я выполняю в консоли браузера, где входные данные представляют собой один¹ или несколько XPath, а выходные данные представляют собой строку, которую я могу либо скопировать из консоли и вставить в электронную таблицу (или, возможно, эта строка вставляется непосредственно в картон?)

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

Я плохо умею использовать консоль браузера, а также Javascript... Вот почему я задаю этот вопрос.

(Моя конечная цель — рассчитать изменение цены в процентах)

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

0 ответов

Другие вопросы по тегам