1

我有以下html:

<html lang="en-US" xml:lang="en-US" xmlns="http://www.w3.org/1999/xhtml">
<body>
<title>CATe - hj1612</title>
</td></tr></table>
</td></tr></table></td><td><img src="icons/arrowredright.gif"/></td><td align="center">
<input name="keyt" type="hidden" value="a3dvl"/>
<input type="submit" value="View"/><br/>or<br/>
<input type="reset" value="Reset"/>
</td>
</tr>
</body>
</html>

我正在尝试获得keyt. 因为html我正在使用BeautifulSoup.

soup = BeautifulSoup(html)

我知道你可以soup.findidlikesoup.find(id="randomid")

soup.find(name="keyt") 不会工作,因为它不是身体标签......结果我想我会使用正常的if substring in string:方法所以

for line in soup.find_all('input'):
    if "keyt" in line:
        print line

但这种方法似乎不起作用,我是 python 新手,所以会很感激任何帮助/指向正确的方向

4

2 回答 2

3
from bs4 import BeautifulSoup

html = """
<html lang="en-US" xml:lang="en-US" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CATe - hj1612</title>
</td></tr></table>
</td></tr></table></td><td><img src="icons/arrowredright.gif"/></td><td align="center">
<input name="keyt" type="hidden" value="a3dvl"/>
<input type="submit" value="View"/><br/>or<br/>
<input type="reset" value="Reset"/>
</td>
</tr>
</html>
"""

soup = BeautifulSoup(html)

print soup.find(name="input", attrs={'name': 'keyt'})

输出:

<input name="keyt" type="hidden" value="a3dvl"/>

如果要查找多个匹配项,则可以使用该find_all函数。find至于如何使用这两个功能,name是您要查找的标签的名称,而attrsdict 是您真正用来查找具有特定属性的东西的东西,在您的情况下是name属性。

于 2013-10-19T13:55:33.900 回答
1

你有一些奇怪的 HTML。HEAD 标记未关闭,td,表未打开。我什至无法想象,汤如何解析它。

于 2013-10-19T13:52:33.963 回答