Как я могу извлечь два или три «параллельных» 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 я бы просто выполнил его один раз.