美丽的汤在标签内找到标签

时间:2015-03-03 00:59:27

标签: python html unit-testing beautifulsoup

我试图创建一个单元测试,可以在html标签中找到body标签,我试图进行以下测试,但由于某些原因我发现语法错误,我有正确设置美丽的汤等:

for tag in soup.find_all(re.compile("""<html.*><body.*></body></html>""")):
    count+=1
self.assertEqual(count,1)

1 个答案:

答案 0 :(得分:2)

您可以使用.parent属性查看感兴趣的标记的父标记:

html = '<html>\
 <head>\
  <title>Test</title>\
 </head>\
 <body>\
  bla\
<a><body></body></a>\
 </body>\
</html>\
<body>\
 bla\
</body>'

from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'html.parser')
bodies = soup.findAll('body')
for body in bodies:
  parent = body.parent.name
  if ( parent == 'html' ):
    print('Good! Parent = ' + body.parent.name)
  else:
    print('Uh oh! Parent = ' + body.parent.name)

示例文档包含一个<body>标记,该标记适当地是<html>标记的子标记,一个嵌套在其他标记中的标记,以及一个完全位于文档外部的标记。输出是这样的:

Good! Parent = html
Uh oh! Parent = a
Uh oh! Parent = [document]