BeautifulSoup:删除小部件

时间:2016-08-18 14:39:53

标签: python web-scraping beautifulsoup

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的一些垃圾仍然存在。  我将如何一劳永逸地摆脱那个小部件?

1 个答案:

答案 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>