Как получить значение скрытого ввода с помощью питона?

как я могу получить входное значение из HTML-страницы

как

<input type="hidden" name="captId" value="AqXpRsh3s9QHfxUb6r4b7uOWqMT" ng-model="captId">

у меня есть имя ввода [ name= "captId"] и нужно его значение

import re , urllib ,  urllib2
a = urllib2.urlopen('http://www.example.com/','').read()

thanx


обновление 1

Я установил BeautifulSoup и использовал его, но есть некоторые ошибки

код

 import re , urllib ,  urllib2
 a = urllib2.urlopen('http://www.example.com/','').read()
 soup = BeautifulSoup(a)
 value = soup.find('input', {'name': 'scnt'}).get('value')

"суп = BeautifulSoup (a) NameError: имя 'BeautifulSoup' не определено"

1 ответов


используя re модуль для анализа xml или html обычно считается плохой практикой. Используйте его только если вы ответственны за страницу, которую вы пытаетесь разобрать. Если нет, либо ваши регулярные выражения ужасно сложны, либо ваш скрипт может сломаться, если кто-то заменит <input type="hidden" name=.../> С <input name="..." type="hidden" .../> или почти ничего.

BeautifulSoup является синтаксическим анализатором html, который:

  • автоматически исправляет незначительные ошибки (незакрытые теги ...)
  • построить дерево дом
  • позволяет просматривать дерево, искать определенные теги, с определенными атрибутами
  • можно использовать с Python 2 и 3

если у вас нет веских причин не делать этого, вы должны использовать его, а не re для синтаксического анализа HTML.

например, предполагая, что txt содержит всю страницу, находит все скрытые поля будет так же просто, как :

from bs4 import BeautifulSoup
soup = BeautifulSoup(txt)
hidden_tags = soup.find_all("input", type="hidden")
for tag in hidden_tags:
    # tag.name is the name and tag.value the value, simple isn't it ?