Разобрать значение html в python

У меня есть следующий html:

<td>
   <input maxlen = "1" name = "db" size = "1" type = "text" value = "25"/>
   <div style = "display:inline-block;position:relative;top:6px;left:0px;width:20px;">
    <input class = "p_b" name = "ta" style = "height:1em; width:1.5em;line-height:1em;padding:0px;margin:0px;border:0px;background-color:#f3f3f3" type = "submit" value = "▴"/>
    <input class = "p_b" name = "ta" style = "height:1em; width:1.5em;line-height:1em;padding:0px;margin:0px;border:0px;background-color:#f3f3f3" type = "submit" value = "▾"/>
   </div>
   <span style = "position:relative;top:8px">
    
   </span>
   <input maxlen = "1" name = "dc" size = "1" type = "text" value = "0"/>
   <div style = "display:inline-block;position:relative;top:6px;left:0px;width:20px;">
    <input class = "p_b" name = "tb" style = "height:1em; width:1.5em;line-height:1em;padding:0px;margin:0px;border:0px;background-color:#f3f3f3" type = "submit" value = "▴"/>
    <input class = "p_b" name = "tb" style = "height:1em; width:1.5em;line-height:1em;padding:0px;margin:0px;border:0px;background-color:#f3f3f3" type = "submit" value = "▾"/>
   </div>
  </td>

Мне нужно извлечь оба числа из value="25" и value="0". Я сделал обходной путь, например:

y = soup.findAll('input', {'type':'text'})
a = re.findall('(?<=value = ")(\d*)',str(y))

Но я думаю, что должен быть более прямой способ сделать это через парсер, может ли кто-нибудь помочь с этим?

Я бы использовал подход XPath.

MetallimaX 15.12.2020 12:45

Более или менее дубликат этого поста.

costaparas 15.12.2020 12:46

Отвечает ли это на ваш вопрос? Python BeautifulSoup — получение входного значения

Ckrielle 15.12.2020 12:57

@MetallimaX BeautifulSoup не поддерживает XPath

Parolla 15.12.2020 13:00

@Parolla Я знаю, и тебе тоже не нужно этого придерживаться. XPath был сделан для таких запросов.

MetallimaX 15.12.2020 13:01
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
4
5
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте ниже строку кода извлечь @value из каждого входного узла

values = [element['value'] for element in soup.findAll('input', {'type':'text'})]

P.S. Обратите внимание, что использование регулярных выражений для парсинга веб-страниц — очень плохая практика — существует достаточно инструментов для парсинга веб-страниц, которые могут легко сделать это за вас (например, BeautifulSoup и lxml можно использовать в Python)

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