【问题标题】:python - beautifulsoup - removing a line of codepython - beautifulsoup - 删除一行代码
【发布时间】:2019-04-15 18:27:37
【问题描述】:

我开始学习beautifulsoup。我正在尝试从 html 脚本中删除一行包含 </div> 的代码。

文档中的大多数示例都是针对整个标签(开始和结束部分)提供的。
是否可以只修改标签的一部分? 例如:

</div>
<div >Hello</div>
<div data-foo="value">foo!</div>


如何只删除第一行代码?

【问题讨论】:

    标签: python html web-scraping beautifulsoup


    【解决方案1】:

    您可以使用 BeautifulSoup 的unwrap() 指定无效标签,它只会删除没有打开/关闭对应项的额外标签,而保留其他标签:

    soup = BeautifulSoup(html_doc, 'html.parser')
    
    invalid_tags = ['</div>']
    
    for tag in invalid_tags: 
        for match in soup.findAll(tag):
            match.unwrap()
    
    print(soup)
    

    结果:

    <div>Hello</div>
    <div data-foo="value">foo!</div>
    

    【讨论】:

    • 不应该invalid_tags = ['&lt;\div&gt;']['&lt;/div&gt;']
    • 我不知道,但这也有效,可能是首选约定,会更新,谢谢。
    【解决方案2】:

    你不需要做任何事情它会自动修复

    from bs4 import BeautifulSoup
    
    html_doc = '''</div> 
    <div>World</div>
    <div data-foo="value">foo!''' # also invalid, no closing
    
    soup = BeautifulSoup(html_doc, 'html.parser')
    print(soup)
    

    输出

    <div>World</div>
    <div data-foo="value">foo!</div>
    

    unwrap() 用于移除非修复标签。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-08
      • 1970-01-01
      • 1970-01-01
      • 2012-05-06
      • 2019-08-24
      相关资源
      最近更新 更多