使用BeautifulSoup创建div标签时添加class属性的正确方法
解决BeautifulSoup创建标签时添加class属性的语法错误问题
哈哈,这个问题我刚学BeautifulSoup的时候也踩过坑!原因很简单——class是Python的保留关键字,你直接把它作为参数名传给new_tag(),Python解释器肯定会报错。这里有两种常用的正确解决方式:
方法一:使用class_替代class作为参数名
BeautifulSoup专门为这个场景提供了class_参数(末尾加下划线),它会自动映射为HTML的class属性:
# 创建带class的div标签 new_div = soup.new_tag("div", class_="description", style="float:left") # 插入到文档中 soup.body.append(new_div)
方法二:通过attrs字典传递属性
如果觉得下划线不够直观,或者需要一次性传递多个特殊属性,你可以用attrs参数传入一个字典,把所有属性名和值都放在字典里:
# 用attrs字典定义所有属性 new_div = soup.new_tag("div", attrs={"class": "description", "style": "float:left"}) soup.body.append(new_div)
额外技巧:添加多个class属性
如果需要给标签设置多个class,还可以传入列表形式的class值,BeautifulSoup会自动帮你拼接成空格分隔的字符串:
# 方法一的多class写法 new_div = soup.new_tag("div", class_=["description", "content-box"], style="float:left") # 方法二的多class写法 new_div = soup.new_tag("div", attrs={"class": ["description", "content-box"], "style": "float:left"})
生成的标签会是:<div class="description content-box" style="float:left"></div>
内容的提问来源于stack exchange,提问作者navotera
相关产品推荐
相关产品推荐

