2015-05-27 85 views
7

如何从HTML页面获取输入值如何通过使用python获取隐藏的输入值?

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

我输入名字[NAME = “captId”],需要他的价值

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

感谢名单


更新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' 没有定义”

+2

你得到一个隐藏的输入值相同的方式,你得到任何其他输入:

例如假设txt包含整个页面,找到所有隐藏的字段是一样简单。 – Barmar

+0

是的,但我用什么re.findall或re.search和如何写真模式 – IBRA

+0

BeautifulSoup应该是你需要的:你首先选择表单,然后隐藏的领域。 –

回答

4

使用re模块来解析xml或html通常被认为是不好的做法。只有在对您尝试解析的页面有反应时才使用它。如果不是,您的正则表达式非常复杂,或者如果某人用替换<input name="..." type="hidden" .../>或几乎其他任何东西,脚本可能会中断。

BeautifulSoup是一个HTML解析器:

  • 自动修复小错误(未关闭标签...)
  • 建立一个DOM树
  • 允许您浏览该树,搜索特定的标签,具有特定属性的
  • 是可用使用Python 2和3

除非你有很好的理由ñ不要这样做,你应该使用它而不是re进行HTML解析。

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

相关问题