我想从一个变量调用一个美丽的汤属性(例如class_,HREF,同上)用它在功能,如本中存储的变量的属性:调用和使用(使用Beautifulsoup 4)
脚本
from bs4 import BeautifulSoup
data='<p class="story">xxx </p> <p id="2">yyy</p> <p class="story"> zzz</p>'
def removeAttrib(data, **kwarg):
soup = BeautifulSoup(data, "html.parser")
for x in soup.findAll(tag, kwargs):
del x[???] # should be an equivalent of: del x["class"]
kwargs= {"class":"story"}
removeAttrib(data,"p",**kwargs)
print(soup)
预期的结果:
<p>xxx </p> <p id="2">yyy</p> <p> zzz</p>
MYGz使用tag, argdict
使用字典作为函数的参数解决了第一个问题。然后我在this question中发现了**kwargs
(要传递字典的键值)。
但我没有找到del x["class"]
的方式。 如何传递“class”键?我尝试使用ckey=kwargs.keys()
,然后del x[ckey]
但它没有奏效。
ps1:任何想法为什么removeAttrib(data,“p”,{“class”:“story”})不起作用? Ps2的:这是另外一个话题比this(这不是一式两份)
这是不我正在寻找的答案是:它并没有告诉我如何在其他情况下调用属性 - 尽管我没有找到其他示例。但我非常感谢你为这个优雅的解决方案。我在文档中发现“您可以通过将标签视为字典来访问标签的属性”,另一种方式是使用attrs(或实际上是快捷方式的class_) – JinSnow
我终于找到了例子寻找。在soup.findAll(tag,argdict)中为x:del x [* key]'请看我的问题编辑。 – JinSnow
@Guillaume您没有提出完整的问题。我更新了答案。这就是你如何删除不需要的标签。 – MYGz