首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何刮掉whatsapp表情符号?

如何刮掉whatsapp表情符号?
EN

Stack Overflow用户
提问于 2021-08-23 17:14:13
回答 1查看 160关注 0票数 1

我知道如何从whatsapp上删除表情符号,但只有在1)有一个没有任何文本的表情符号或2)有带有表情符号的文本的情况下。但是,当一条消息中有两个没有任何文本的表情符号时,我无法进行网页抓取。.This是消息"?“的html。

代码语言:javascript
复制
<div class="JwMbj i0jNr selectable-text copyable-text">
    <span class="_3R6rC">
        <img crossorigin="anonymous"
            src="/img/d07f9aca6938f691b840f97dd1cd67dd_w_638-64.png" alt="?" draggable="false"
            class="_2UdhN _1xeoG i0jNr selectable-text copyable-text" data-plain-text="?"
            style="visibility: visible;">
    </span>
</div>

我试着用这个代码来获取表情符号

代码语言:javascript
复制
m = s.find_all('div', attrs={'class':'i0jNr'})
v = m.find('span', attrs={'class':'_3R6rC'})                         
for i in v.children:
    if isinstance(i, NavigableString):
        print(i)
    elif isinstance(i, Tag):
        print(i.attrs['alt'])

但通过此代码,只有当有单个表情符号时才有效,但当消息中有两个表情符号时,它只打印一个,比如如果消息是"??“,则输出为"?”(它只打印第一个表情符号)。这是该消息的html

代码语言:javascript
复制
<div class="JwMbj i0jNr selectable-text copyable-text">
    <span class="_3R6rC">
        <img crossorigin="anonymous"
            src="/img/d07f9aca6938f691b840f97dd1cd67dd_w_1749-40.png" alt="?" draggable="false"
            class="_2UdhN _3zyju i0jNr selectable-text copyable-text" data-plain-text="?"
            style="visibility: visible;">
    </span>
    <span class="_3R6rC">
        <img crossorigin="anonymous"
            src="/img/d07f9aca6938f691b840f97dd1cd67dd_w_1845-40.png" alt="?" draggable="false"
            class="_2UdhN _3zyju i0jNr selectable-text copyable-text" data-plain-text="?"
            style="visibility: visible;">
    </span>
</div>

我尝试了这个代码来打印这两个表情符号,但它不起作用

代码语言:javascript
复制
msglist = []
m = s.find_all('div', attrs={'class':'i0jNr'}) 
for b in m:
    v = b.find_all('div', attrs={'class':'JwMbj'})   
    for x in v:      
        z = x.find_all('span', attrs={'class':'_3R6rC'})                
        for i in z.children:
            if isinstance(i, NavigableString):
                print(i)
            elif isinstance(i, Tag):
                print(i.attrs['alt'])

但是它没有给出任何输出.Someone帮助我

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-23 17:21:00

您可以使用.get_text<img>标记转换为纯文本,然后正常获取文本。例如:

代码语言:javascript
复制
from bs4 import BeautifulSoup

html_doc = """
<div class="JwMbj i0jNr selectable-text copyable-text">
    <span class="_3R6rC">
        <img crossorigin="anonymous"
            src="/img/d07f9aca6938f691b840f97dd1cd67dd_w_1749-40.png" alt="?" draggable="false"
            class="_2UdhN _3zyju i0jNr selectable-text copyable-text" data-plain-text="?"
            style="visibility: visible;">
    </span>
    <span class="_3R6rC">
        <img crossorigin="anonymous"
            src="/img/d07f9aca6938f691b840f97dd1cd67dd_w_1845-40.png" alt="?" draggable="false"
            class="_2UdhN _3zyju i0jNr selectable-text copyable-text" data-plain-text="?"
            style="visibility: visible;">
    </span>
</div>
"""

soup = BeautifulSoup(html_doc, "html.parser")

# select the main text div
text_div = soup.select_one(".copyable-text")

# convert all <img> to plain-text:
for img in text_div.select("img[data-plain-text]"):
    img.replace_with(img["data-plain-text"])

# get text normally:

print(text_div.get_text(strip=True))

打印:

代码语言:javascript
复制
??
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68896558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档