Python社区  »  Python

如何删除Python HTML文本中的所有元素,其中标签作为兄弟元素存在

ê°•í¬ëª • 2 周前 • 48 次点击  

我需要在python中解析脏html字符串,在这里我需要消除所有在它旁边有兄弟标记的文本。

例如,我需要转换这个html。

    <p class="se_textarea">
        x3C!-- SE3-TEXT { --&gt;
    <span>
        <b>식탁등/카페조명/매장/포인트조명/pc방/티 테이블 등등</b>
        nnnnnnn
        <br>
    </span>
    <span>
        <b>어느곳에 설치 하셔도 예쁜..&nbsp;</b>
        <br>
    </span>
    </p>

到这个html。

    <p class="se_textarea">
    <span>
        <b>식탁등/카페조명/매장/포인트조명/pc방/티 테이블 등등</b>
        <br>
    </span>
    <span>
        <b>어느곳에 설치 하셔도 예쁜..&nbsp;</b>
       <br>
    </span>
    </p>

自从 x3C!-- SE3-TEXT { --&gt; <span> nnnnn是 <b> 我需要在 식탁등/카페조명/매장/포인트조명/pcë°©/티 테이블 등등 <b> 我不需要移除它。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52642
 
48 次点击  
分享到微博
文章 [ 1 ]  |  最新文章 2 周前
FailSafe
Reply   •   1 楼
FailSafe    10 月前

小宝贝,这是非常具体的部分,因为你真的只提供了一个例子,所以我不确定什么样的标签会来,所以你有两个选择。

确实,regex通常不是html的最佳选择,但我确实希望这能有所帮助。美化组或lxml可能最终会更好。

如果格式相对一致,使用re.sub(对于Python3)可以使用distance,所以这里我要说的是替换任何不以 < 如果前面有7个或更多空格

>>> import re



>>> string = '''<p class="se_textarea">
        <span>
            <b>식탁등/카페조명/매장/포인트조명/pc방/티 테이블 등등</b>
            nnnnnnn
            <br>
        </span>
        <span>
            <b>어느곳에 설치 하셔도 예쁜..&nbsp;</b>
           <br>
        </span>
        </p>'''



>>> print(re.sub('(?m)\n[\ ]{7,}(?!<)[\S]+(?=\n|$)', '', string))


    #OUTPUT
    <p class="se_textarea">
    <span>
        <b>식탁등/카페조명/매장/포인트조명/pc방/티 테이블 등등</b>
        <br>
    </span>
    <span>
        <b>어느곳에 설치 하셔도 예쁜..&nbsp;</b>
        <br>
    </span>
    </p>

.

或者可以使用特定的regex并在必要时替换标记名

>>> import re



>>> string = '''<p class="se_textarea">
        <span>
            <b>식탁등/카페조명/매장/포인트조명/pc방/티 테이블 등등</b>
            nnnnnnn
            <br>
        </span>
        <span>
            <b>어느곳에 설치 하셔도 예쁜..&nbsp;</b>
           <br>
        </span>
        </p>'''



>>> print(re.sub(r'(<span>[\S\s]*?<[\S\s]*?>[\S\ ]*?</[\S\s]*?>[\s]*?)([\S\s]*?)(\n[\ ]+<)', r'\1\3', string))


    #OUTPUT
    <p class="se_textarea">
    <span>
        <b>식탁등/카페조명/매장/포인트조명/pc방/티 테이블 등등</b>
        <br>
    </span>
    <span>
        <b>어느곳에 설치 하셔도 예쁜..&nbsp;</b>
        <br>
    </span>
    </p>