【问题标题】:How to get the hidden input's value by using python?如何使用python获取隐藏的输入值?
【发布时间】:2015-05-27 17:26:31
【问题描述】:

如何从 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()

感谢


更新 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' 未定义"

【问题讨论】:

  • 您获得隐藏输入的值的方式与获得任何其他输入的方式相同。
  • 是的,但我使用 re.findall 或 re.search 以及如何编写真正的模式
  • BeautifulSoup 应该是您所需要的:您首先选择表单,然后选择隐藏字段。
  • @IBRA 我误会了,我以为你在谈论表单发布到的脚本,而不是网络抓取脚本。
  • @Barmar 是的,我想将帖子发送到 url 并在输入中获取信息

标签: python python-2.7 urllib2 findall


【解决方案1】:

使用re 模块解析xml 或html 通常被认为是不好的做法。仅当 您 对您尝试解析的页面负责时才使用它。如果没有,要么你的正则表达式非常复杂,要么你的脚本可能会在有人用 &lt;input name="..." type="hidden" .../&gt; 或其他几乎任何东西替换 &lt;input type="hidden" name=.../&gt; 时中断。

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 ?

【讨论】:

  • @IBRA 在引用的站点中有很多...但是还是看看我的编辑
  • 我有完整的标签使用你的代码 sn-p 但我不知道如何使用它来获取我需要的数据。
  • @deepaksen:这是一篇相当老的帖子了。您确定只是想发表评论,还是想提出一个新问题,将这篇文章作为您当前研究的参考?
  • 我肯定会这样做
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
  • 2021-01-07
  • 1970-01-01
  • 2013-08-18
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
相关资源
最近更新 更多