使用bs4从HTML发出解析变量

时间:2017-06-06 20:22:14

标签: beautifulsoup

我试图解析变量的“值”(__VIEWSTATEGENERATOR),这里是HTML代码::

<div>
<input id="__VIEWSTATEGENERATOR" name="__VIEWSTATEGENERATOR" type="hidden" value="1434571F"/>
</div>

这是我试图用::

做的代码
viewstategenerator = soup.findAll("input", {"type": "hidden", "name": "__VIEWSTATEGENERATOR"})

然后我执行:: print(viewstategenerator),我的变量得到以下字符串:

>>> print(viewstategenerator)
[<input id="__VIEWSTATEGENERATOR" name="__VIEWSTATEGENERATOR" type="hidden" value="1434571F"/>]

我期待只抓住“1434571F”的价值,不知道为什么会这样......任何帮助都会受到高度赞赏!

1 个答案:

答案 0 :(得分:1)

看起来你很接近但只是对BeautifulSoup API感到困惑。

soup.findAll返回与您提供的查询匹配的所有DOM元素的列表。看到页面上只有一个元素可以与您的查询匹配,您应该使用soup.find代替。要获取value元素的input属性的值,请使用['value']

from bs4 import BeautifulSoup as Soup

html = """
<div>
<input id="__VIEWSTATEGENERATOR" name="__VIEWSTATEGENERATOR" type="hidden" value="1434571F"/>
</div>
"""

soup = Soup(html, 'lxml') # Use whatever parser you're already using.


viewstategenerator = soup.find("input", {"type": "hidden", "name": "__VIEWSTATEGENERATOR"})
print(viewstategenerator['value'])
# Prints 1434571F