Привет, я работаю над проектом в облачных вычислениях - амазонке. Часть кода, на которой я застрял, - это получение списка желаний пользователя с amazon. Поскольку есть ограничения на ограничения, я сделал весь исходный источник страницы, указав URL-адрес списка пожеланий. Чтобы извлечь itemID, я использовал шаблон, подобный
Pattern p = Pattern.compile("/dp/(\\w+)/");
Matcher matcher = p.matcher(content);
Это было легко, и теперь он правильно перечисляет все продукты с их itemId в этом списке пожеланий. Мне также нужна цена за каждого. Согласно источнику страницы, цена
<span class="a-size-base a-color-price a-text-bold">
$7.19
</span>
Мне нужно написать шаблон для этого, и я все запутался и застрял. Я сосать выражения Regex. Может ли кто-нибудь помочь. Я видел онлайн-ссылки для href, но я не думаю, что это сработает для меня.
Благодаря dkatzel я нашел этот инструмент Jsoup. Я попробовал онлайн-конвертацию в онлайн-Jsoup. Попробуйте, поэтому, когда я выполняю CSS Query div, я получаю требуемый вывод. Но как я могу его жестко закодировать в своей java-программе. У меня есть jsoup jar.
Разве не было бы простого выражения?
\\$\\d+(?:\\.\\d+)
\\$
соответствует буквалю $
.
\\d+
соответствует цифрам.
(?:\\.\\d+)
соответствует потенциальным десятичным (?:\\.\\d+)
.
Весь матч - это то, что вы ищете, я думаю, если вам не нужен символ доллара, тогда вы можете использовать либо группу захвата, либо взять первую группу (т.е. \\$(\\d+(?:\\.\\d+))
) или lookbehind (т.е. (?<=\\$)\\d+(?:\\.\\d+)
)
List<String> price = new ArrayList<String>(); Pattern pr=Pattern.compile("\\$\\d+(?:\\.\\d+)"); Matcher priceMatcher= pr.matcher(content); while(priceMatcher.find()) { if(!price.contains(priceMatcher.group(1))) price.add(priceMatcher.group(1)); } System.out.println("Prices fetched in iteration "+count); for(String s : price) { System.out.println(s); }
дает IndexOutOfBoundsException ("Нет группы" + группа);
.group(0)
так как это все совпадение.
Альтернативный ответ, в котором используется Jsoup.
Element e = doc.select("span.a-size-base").first();
Включите jsoup-1.xxjar
в свой проект или при компиляции и добавьте следующий импорт.
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;