【问题标题】:Bug in python bs4 analyzer classes?python bs4分析器类中的错误?
【发布时间】:2014-01-26 10:36:09
【问题描述】:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from bs4 import BeautifulSoup
import re
doc = "<div>Text text <span class='_ _3'>empty</span> text</div>"
soup = BeautifulSoup(doc)
for span in soup.find_all('span' , class_=re.compile("_\s_[0-9]+")) :
    span.decompose()

需要找到所有带有&lt;span class=_ _\d+&gt; 的标签并从DOM 中删除。但是这段代码由于某种原因无法正常工作!

【问题讨论】:

    标签: python regex beautifulsoup


    【解决方案1】:

    BeautifulSoup 为您将课程拆分成一个列表;正则表达式在多个类上不匹配。 class 是一组此类属性之一,请参阅Multi-valued attributes

    您必须使用自定义函数来使用正则表达式过滤多个类:

    def underscored_class_span(elem, numbered=re.compile(u'_\d').match):
        if elem.name != 'span': return False
        classes = elem.get('class', [])
        return u'_' in classes and any(numbered(c) for c in classes)
    
    for span in soup.find_all(underscored_class_span):
        span.decompose()
    

    【讨论】:

      猜你喜欢
      • 2015-07-09
      • 2021-08-16
      • 2015-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-17
      • 1970-01-01
      相关资源
      最近更新 更多