我想從一個變量調用一個美麗的湯屬性(例如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