@roman01

Поиск данных в html с помощью регулярных выражений?

Коллеги, доброго времени суток! Помогите советом или кодом.

В общем, необходимо мне искать в html-странице некоторые данные:

В html-странице мне нужно найти вот такой блок
s = "<span class=\"company__segment__change\"> <span class=\"company__segment__inner\">$$$</span> </span>"


где $$$ - любое число. Я не знаю, в какой форме. Может в десятичной, может 0.11 или 0,1111. То есть разделитель не известен и вообще, будет ли он.

Начал реализовывать, но что-то громоздко получается, сам чувствую, что не оптимально и не правильно.

Посоветуйте, можно ли решить данную задачу с помощью регулярных выражений? Опыта работы с модулем re на python нет вообще. С регулярными выражениями пока не сталкивался, кроме уж совсем примитивных задач.

Если можно, подкиньте образец.

С уважением, Роман
  • Вопрос задан
  • 454 просмотра
Решения вопроса 3
@KraydenSharp
Senior RegExp Developer
Здравствуйте.

Есть такой вариант регулярного выражения https://regex101.com/r/KRX5Qe/1
Ищет числа с минусом и без него, целые и вещественные, с разделителем "точка" и "запятая".
Если необходим код на php, то в меню слева есть инструмент "Generated Code"
Для python достаточно убрать ревнивые квантификаторы https://regex101.com/r/KRX5Qe/3

Если такое решение не устраивает, то можете описать более подробно свою задачу. Попытаюсь помочь.
Ответ написан
Комментировать
@kyern
Быдлокодер без стажа
Документация по регулярным выражениям тут
Тестить свою регулярку удобно на regex101.com, плюс есть минисправочник.
Возможно, подойдет такая регулярка <span.+>([0-9.-]+?)</span.+, но рекомендую проверить ее на коде всей страницы целиком.
Ответ написан
Комментировать
@roman01 Автор вопроса
Составил регулярку: [0-9,.]{1,}

Но есть одно "но" - игнорируются знаки + и -

То есть, число 0.12 или 0,12 находится, то -0,12 - нет

Как это исправить?

А ларчик то просто открывался -
-?[0-9,.]{1,}

Эта регулярка корректно работает
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
freiman
@freiman
Тестировщик 12+
Попробуйте взять библиотеку для работы с HTML.
Не пользовал, но говорят, что быстрая https://github.com/rushter/selectolax
Если скорость обработки не критична, то lxml, а там искать по xpath.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы