page上有一个<twitterwidget>
需要删除(不需要推文中的文字)。
我试过了
for script in soup(["script", "style"]):
script.extract()
但它没有帮助,推文中的文字仍然存在。
我还尝试用推文删除单独的p
:
for s in soup('p'):
try:
if s["lang"]=="en":
s.extract()
except:
pass
但它只是部分解决方案 - 来自twitterwidget
的一些垃圾仍然存在。
我将如何一劳永逸地摆脱那个小部件?
答案 0 :(得分:1)
只需提取 twitterwidget 元素本身就会完全删除它,包括它的所有后代:
from bs4 import BeautifulSoup
html = """<div>foobar</div> <twitterwidget class="twitter-tweet twitter-tweet-rendered" id="twitter-widget-0" data-tweet-id="763961058490933248" style="position: static; visibility: visible; display: block; transform: rotate(0deg); max-width: 100%; width: 500px; min-width: 220px; margin-top: 10px; margin-bottom: 10px;"></twitterwidget>"""
soup = BeautifulSoup(html)
soup.find("twitterwidget").extract()
print(soup)
输出:
<html><body><div>foobar</div> </body></html>