如何在单个标签BeautifulSoup之前添加多个标签

时间:2019-03-04 06:08:57

标签: python html beautifulsoup

我只有一个标签

我需要在具有不同文本之前添加三个a标签,我尝试如下:

headTag = soup.find_all('h1', text='Attendance List')
aTag = soup.new_tag('a') 
aTag['class'] = "btn btn-default pull-right"
aTag.string = "Today"
headTag[0].insert_before(aTag)
aTag.string = "Weekly"
headTag[0].insert_before(aTag)
aTag.string = "Monthly"
headTag[0].insert_before(aTag)

但是它仅添加了最后一个,是否有更好的方法来执行此操作而不声明多个变量?

1 个答案:

答案 0 :(得分:2)

问题在于,您仅创建一个标签,然后重复修改其string属性,而不是创建三个单独的标签并插入所有标签。这就是为什么它仅附加一个标签,以及最终结果是字符串的最后一个原因的原因。

要执行所需的操作,请使用for循环并为每个字符串创建一个新标签,如下所示:

headTag = soup.find_all('h1', text='Attendance List')

for s in ["Today", "Weekly", "Monthly"]:
    aTag = soup.new_tag('a') 
    aTag['class'] = "btn btn-default pull-right"
    aTag.string = s
    headTag[0].insert_before(aTag)