2013-06-21 76 views
3

好吧,我需要解析HTML表单,从“输入”,我需要提取与不是文本类型“文本”和任何人的人。解析HTML表单输入标签与美丽的汤

我有这样的代码:

from BeautifulSoup import BeautifulSoup as beatsop 

html_data = open("forms.html") 

def html_parser(html_data) 
    html_proc = beatsop(html_data) 
    #We extract the text inputs. 
    txtinput = html_proc.findAll('input', {'type':'text'}) 
    #We extract the any kind of input that is not text. 
    listform = ["radio", "checkbox", "password", "file", "image", "hidden"] 
    otrimput = html_proc.findAll('input', {'type':listform}) 

html_parser(html_data) 

我与当地的文档中使用它,但你可以使用的urllib要求任何网页与形式。 现在的问题,我需要提取的非文本输入形式的“价值”的标签,文本的人的“名字”的标签。 有谁知道我该怎么做?

谢谢!

回答

3

要访问元素的属性,使用element['attribute']

from BeautifulSoup import BeautifulSoup as beatsop 


def html_parser(html_data): 
    html_proc = beatsop(html_data) 
    #We extract the text inputs. 
    txtinput = html_proc.findAll('input', {'type':'text'}) 
    listform = ["radio", "checkbox", "password", "file", "image", "hidden"] 
    otrimput = html_proc.findAll('input', {'type': listform}) 

    print('Text input names:') 
    for elem in txtinput: 
     print(elem['name']) 

    print('Non-text input values:') 
    for elem in otrimput: 
     value = elem.get('value') 
     if value: 
      print(value) 
     else 
      print('{} has no value'.format(elem)) 

with open("forms.html") as html_data: 
    html_parser(html_data) 
+0

你是神?这工作像一个魅力。但是,我得到这个错误:回溯(最近通话最后一个):文件 “beatusup.py”,第21行,在 html_parser(html_data)文件 “beatusup.py” 18行,在html_parser打印(ELEM [ '值'] )文件 “/usr/local/lib/python2.7/dist-packages/BeautifulSoup.py”,线路613,在返回的GetItem self._getAttrMap()[关键] KeyError异常: '值' –

+0

你可以帮我这个错误?或者它与我的机器? –

+0

@ Asp1r3-At0m,我更新了代码。 – falsetru