我有以下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.find
使用id
soup.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的新手,所以会感谢任何帮助/指向正确的方向
答案 0 :(得分: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
是您要查找的标记的名称,而attrs
字典是真正用于查找内容的内容在您的情况下,特定属性是name
属性。
答案 1 :(得分:1)
你有一些奇怪的HTML。 HEAD标签未关闭,td,表未打开。我甚至无法想象,汤可以解析它。