вычесть текстовую строку Java - PullRequest
0 голосов
/ 25 апреля 2018

Я хочу извлечь ссылку из URL.

Например, мой URL выглядит так:

"https://www.amazon.es/Lenovo-YOGA-520-14IKB-Ordenador-convertible/dp/B071WBF4PZ/"

Я хочу получить только справочную часть, то есть B071WBF4PZ

Я также хочу извлечь цену из этого HTML-элемента:

"<div id="cerberus-data-metrics" style="display: none;" data-asin="B078ZYX4R5" data-asin-price="1479.00" data-asin-shipping="0" data-asin-currency-code="EUR" data-substitute-count="0" data-device-type="WEB" data-display-code="Asin is not eligible because it has a retail offer" ></div>"

Мне нужно получить только значение атрибута data-asin-price .

Это можно сделать с помощью indexOf', подстроки or split`, но я не понимаю, как это сделать.

1 Ответ

0 голосов
/ 25 апреля 2018
  • Ссылочная часть:

код:

String url = "https://www.amazon.es/Lenovo-YOGA-520-14IKB-Ordenador-convertible/dp/B071WBF4PZ/";

String[] parts = string.split("/");
// parts : 
// [0] = "https:"
// [1] = ""
// [2] =  "www.amazon.es"
// [3] = "Lenovo-YOGA-520-14IKB-Ordenador-convertible"
// [4] = "dp"
// [5] = "B071WBF4PZ"
// [6] = ""

String reference = parts[5]; // < this is the reference.

Однако я бы рекомендовал использовать Регулярные выражения / шаблоны

А также проверьте, если parts.length() >= 6, прежде чем получить доступ [5]

  • Ценовая часть:

Используя Jsoup , вы можете легко анализировать html и извлекать такие свойства, как data-asin-price. В этом случае я бы не использовал регулярные выражения. Однако регулярные выражения не нуждаются в дополнительных библиотеках.

Это RegEx:

(?:data-asin-price=")(\w*.\w*)

будет соответствовать любому числу после data-asin-price=" - таким образом, группа соответствия 1 будет: 1479.00

...