为什么此正则表达式不能用于此html?

时间:2019-06-03 15:37:06

标签: regex python-3.x beautifulsoup

<div class="_1zGQT _2ugFP message-in">
    <div class="-N6Gq">
        <div class="copyable-text" data-pre-plain-text="[18:09, 3.6.2019] Лера сестра: ">
            <div class="_12pGw">
                <div class="_3X58t selectable-text invisible-space copyable-text">
                    <span class="_2ZDCk">
                        <img crossorigin="anonymous" src="URL" alt="?" draggable="false" class="_298rb _2FANH selectable-text invisible-space copyable-text" data-plain-text="?" style="visibility: visible;">
                    </span>
                </div>
            </div>
        </div>
    </div>
</div>

我尝试获取以下代码:

soup.find('div', class_=re.compile('^selectable-text invisible-space copyable-text'))

我得到的一切:没有。 问题在于类(_3X58t)的一部分正在更改。

2 个答案:

答案 0 :(得分:1)

这可能是由于使用了^锚,我们可以将其修改为:

soup.find('div', class_=re.compile('selectable-text invisible-space copyable-text'))

或者我们可以为div尝试以下表达式:

(.+?selectable-text invisible-space copyable-text)

Demo

答案 1 :(得分:0)

我首先要看看是否可以使用复合类列表中的单个类,例如

soup.select_one('.selectable-text')

其他组合类

soup.select_one('[class$="selectable-text invisible-space copyable-text"]')

与其求助于正则表达式。

相关问题