2015-05-27 4 views
7

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

как

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

У меня есть имя входа [имя = "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 (а) NameError: название 'BeautifulSoup' не определен"

+2

Вы получаете значение скрытого ввода таким же образом вы получаете любой другой вход. – Barmar

+0

Да, но что я использую re.findall или re.search и как писать истинный шаблон – IBRA

+0

BeautifulSoup должен быть тем, что вам нужно: сначала выберите форму, затем скрытые поля. –

ответ

4

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

BeautifulSoup является HTML-парсер, который:

  • автоматически исправляет незначительные ошибки (незакрытые теги ...)
  • построить дерево DOM
  • позволяет просматривать дерево, поиск конкретных тегов, с определенными атрибутами
  • пригодный к использованию с 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 ? 
+0

спасибо bro Можете ли вы привести пример использования BeautifulSoup – IBRA

+0

@IBRA Есть много их в ссылках, которые указаны ... Но см. Мое редактирование в любом случае –

+0

Я обновил вопрос – IBRA

Смежные вопросы