2015-05-27 26 views
7

Jak mogę uzyskać wartość wejściową od strony htmlJak uzyskać wartość ukrytego wejścia za pomocą pythona?

jak

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

mam nazwę wejściowy [name = "captId"] i potrzebujemy jego wartość

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

thanx


aktualizacja 1

zainstalowałem BeautifulSoup i wykorzystał je, ale istnieją pewne błędy

kod

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

błąd

"zupa = BeautifulSoup (a) NameError: nazwa 'BeautifulSoup' nie jest zdefiniowane"

+2

uzyskać wartość ukrytego wejścia w ten sam sposób można uzyskać wszelkie inne wejście. – Barmar

+0

tak, ale co używam re.findall lub re.search i jak pisać prawdziwy wzór – IBRA

+0

BeautifulSoup powinien być tym, czego potrzebujesz: najpierw wybierz formularz, a następnie ukryte pola. –

Odpowiedz

4

Używanie modułu re do parsowania xml lub html jest ogólnie uważane za złe praktyki. Używaj go tylko wtedy, gdy jesteś odpowiedzialny za stronę, którą próbujesz analizować. Jeśli nie, to twoje wyrazy regularne są strasznie skomplikowane lub twój skrypt może się zepsuć, jeśli ktoś zastąpi <input type="hidden" name=.../> z <input name="..." type="hidden" .../> lub prawie cokolwiek innego.

BeautifulSoup jest parser HTML:

  • automatycznie naprawia drobne błędy (niezamknięte tagi ...)
  • zbudować drzewo DOM
  • umożliwia przeglądanie drzewa, wyszukiwać konkretne znaczniki, z określonymi atrybutami
  • jest użyteczny w Pythonie 2 i 3

Chyba że masz powody n Aby to zrobić, powinieneś użyć go zamiast re do parsowania HTML.

Na przykład zakładając, że txt zawiera całą stronę, znajdź wszystkie ukryte pola byłoby tak proste, jak:

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

dzięki bro Czy możesz podać przykład zastosowania BeautifulSoup – IBRA

+0

@IBRA Jest ich wiele w odwołanych widokach ... Ale zobacz moją edycję mimo to –

+0

Zaktualizowałem pytanie – IBRA