Захват данных между больше, чем меньше, чем

В основном я программист SQL с небольшим опытом работы с Java.

Я не собираюсь утомлять вас всем написанным мной кодом, который работает до сих пор. Но на данный момент я пытаюсь извлечь данные с сайта фондовой биржи и поместить эти данные в файл, который я создаю в формате CSV.

Я извлекаю построчно html-код, который использует td и /td для открытия и закрытия столбцов. Я хочу получить данные между знаком «Больше чем» и знаком «Меньше», а затем перейти к следующему. Просто пытаюсь понять это, не делая это слишком сложным.

Опишите ожидаемые и фактические результаты:

Итак, если у меня есть

<td class = "blah" class = "blah">STOCK</td><td class = "blah" class = "blah">STOCK COMPANY NAME</td>

Я хочу захватить STOCK в строку, а затем ИМЯ АКЦИОНЕРНОЙ КОМПАНИИ.

Все, с чем мне нужна помощь, это код между > ***** < ... не более того, потому что я наслаждаюсь процессом обучения ... просто застрял на несколько часов.

рассмотрите возможность использования селена

Scary Wombat 24.01.2019 02:48

рассмотрите возможность использования jsoup

Kartik 24.01.2019 02:53
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
74
1

Ответы 1

Вы можете использовать регулярное выражение с просмотром назад и просмотром вперед — (?<=>).*?(?=<).
(?<=>) означает, что ему предшествует больше, чем символ
.*? соответствует любому количеству символов, не жадный
(?=<), за которым следует символ "меньше"

String input = "<td class=\"blah\" class=\"blah\">STOCK</td><td class=\"blah\" class=\"blah\">STOCK COMPANY NAME</td>";
Matcher matcher = Pattern.compile("(?<=>).*?(?=<)").matcher(input);
List<String> res = new ArrayList<>();
while (matcher.find()) res.add(matcher.group());
res = res.stream().filter(s -> !s.isEmpty()).collect(Collectors.toList()); //remove empty strings
System.out.println(res);

Вывод

[STOCK, STOCK COMPANY NAME]

Примечание: лучше использовать парсер HTML, например суп.

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

Patrick Parker 24.01.2019 04:09

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