使用bs4查找和删除HTML5数据-*属性

使用bs4查找和删除HTML5数据-*属性,html,python-3.x,beautifulsoup,Html,Python 3.x,Beautifulsoup,HTML5文件可能包含 我想用bs4查找并删除所有这些数据-*属性 根据bs4文档,可以使用attrs属性搜索这些属性 例如: import re from bs4 import BeautifulSoup data_soup = BeautifulSoup('<div data-foo="value">foo!</div>') data_soup.find_all(attrs={"data-foo": "value"}) 我需要使用什么正则表达式来查找所有数据-*属性

HTML5文件可能包含

我想用bs4查找并删除所有这些数据-*属性

根据bs4文档,可以使用attrs属性搜索这些属性

例如:

import re
from bs4 import BeautifulSoup
data_soup = BeautifulSoup('<div data-foo="value">foo!</div>')
data_soup.find_all(attrs={"data-foo": "value"})
  • 我需要使用什么正则表达式来查找所有数据-*属性(无论其值如何)

  • 找到后,如何使用del删除它们


  • 是的,要删除属性,只需在
    tag.attrs
    上使用
    del

    data = '''
    <ul>
      <li data-animal-type="bird" data-other="this is other data">Owl</li>
      <li data-animal-type="fish">Salmon</li>
      <li data-animal-type="spider">Tarantula</li>
    </ul>'''
    
    from bs4 import BeautifulSoup
    
    soup = BeautifulSoup(data, 'lxml')
    
    print('Original soup:')
    print(soup)
    print('-' * 80)
    
    for tag in soup.find_all(lambda t: any(i.startswith('data-') for i in t.attrs)):
        for attr in list(tag.attrs):
            if attr.startswith('data-'):
                del tag.attrs[attr]
    
    print()
    print('Soup without data-* tags:')
    print(soup)
    print('-' * 80)
    
    data=''
    
    • Owl
    • 鲑鱼
    • 狼蛛
    “” 从bs4导入BeautifulSoup soup=BeautifulSoup(数据'lxml') 打印('原始汤:') 印花(汤) 打印('-'*80) 用于soup.find_all(lambda t:any(i.startswith('data-'),用于t.attrs中的i)): 对于列表中的属性(tag.attrs): 如果attr.startswith('data-'): del tag.attrs[attr] 打印() 打印('没有数据的汤-*标记:') 印花(汤) 打印('-'*80)
    这张照片是:

    Original soup:
    <html><body><ul>
    <li data-animal-type="bird" data-other="this is other data">Owl</li>
    <li data-animal-type="fish">Salmon</li>
    <li data-animal-type="spider">Tarantula</li>
    </ul></body></html>
    --------------------------------------------------------------------------------
    
    Soup without data-* tags:
    <html><body><ul>
    <li>Owl</li>
    <li>Salmon</li>
    <li>Tarantula</li>
    </ul></body></html>
    --------------------------------------------------------------------------------
    
    原汁原味汤:
    
    • Owl
    • 鲑鱼
    • 狼蛛
    -------------------------------------------------------------------------------- 无数据的汤-*标记:
    • 猫头鹰
    • 三文鱼
    • 狼蛛
    --------------------------------------------------------------------------------
    Original soup:
    <html><body><ul>
    <li data-animal-type="bird" data-other="this is other data">Owl</li>
    <li data-animal-type="fish">Salmon</li>
    <li data-animal-type="spider">Tarantula</li>
    </ul></body></html>
    --------------------------------------------------------------------------------
    
    Soup without data-* tags:
    <html><body><ul>
    <li>Owl</li>
    <li>Salmon</li>
    <li>Tarantula</li>
    </ul></body></html>
    --------------------------------------------------------------------------------