【发布时间】:2021-10-24 00:54:14
【问题描述】:
我知道如何从 WhatsApp 抓取表情符号,但前提是:
- 只有一个表情符号没有任何文字或
- 有带有表情符号的文字。
但是当消息中有两个没有任何文字的表情符号时,我无法进行网络抓取。这是消息“??????”的html
<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>
我尝试了这段代码来获取表情符号:
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
<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>
我尝试使用此代码打印两个表情符号,但它不起作用:
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'])
但它没有给出任何输出。
【问题讨论】:
标签: python python-3.x image web-scraping beautifulsoup