You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python+Selenium提取WhatsApp消息中的日期数据?

提取WhatsApp网页版媒体网格视图中图片消息的日期数据

问题背景

  • 每日接收大量图片,仅需处理当日图片
  • 已进入WhatsApp网页版「媒体、链接和文档」子版块的网格视图

现有进展

已成功提取目标图片的outer HTML、XPath及图片的blob链接,相关代码如下:

  • 图片outer HTML:
    <div role="listitem" aria-label=" image" tabindex="-1" class="g0rxnol2 d0st09ow ikc09dv3 hha4v2jc gfz4du6o r7fjleex bazijzwv n0hkwe29 fvb4mgxr ho9ovbg7 tcg15ap9 c5wy1lv0 bqysl6j9"><div class="lhggkp7q qq0sjtgm tkdu00h0 b9fczbqn cm280p3y ln8gz9je ppled2lx gfz4du6o r7fjleex m62443ks rqga0wu5 ayqm650w sb46ev41 q8kvkxy1 d1poss59 gyj32ejw cmcp1to6 eg0col54 fl2x09zf r2wk4q3o nnij903c lr2nq6lc pcik6s50 oxe6ytxh"><div class="p357zi0d lhggkp7q mf2g8abl lrw9n60e"></div></div><div class="t3g6t33p qnwaluaf cm280p3y ajgl1lbb ppled2lx tukmaf4q lhggkp7q qq0sjtgm p5jrpzbl g6mp970w ln8gz9je jnl3jror"><div class="g0rxnol2 ln8gz9je ppled2lx"><div class="lhggkp7q jnl3jror p357zi0d gndfcl4n ac2vgrno ln8gz9je ppled2lx"><button class="i5tg98hk f9ovudaz przvwfww gx1rr48f shdiholb phqmzxqs gtscxtjd ajgl1lbb thr4l2wc fl2x09zf r2wk4q3o nnij903c lr2nq6lc" tabindex="-1" type="button"><div class="t3g6t33p qnwaluaf cm280p3y ajgl1lbb ppled2lx tukmaf4q lhggkp7q qq0sjtgm p5jrpzbl g6mp970w ln8gz9je jnl3jror"></div></button></div><div class="lhggkp7q jnl3jror p357zi0d gndfcl4n ac2vgrno ln8gz9je ppled2lx"><button class="i5tg98hk f9ovudaz przvwfww gx1rr48f shdiholb phqmzxqs gtscxtjd ajgl1lbb thr4l2wc fl2x09zf r2wk4q3o nnij903c lr2nq6lc" tabindex="-1" type="button"><div class="t3g6t33p qnwaluaf cm280p3y ajgl1lbb ppled2lx tukmaf4q lhggkp7q qq0sjtgm p5jrpzbl g6mp970w ln8gz9je jnl3jror"><div class="t3g6t33p qnwaluaf cm280p3y ajgl1lbb ppled2lx tukmaf4q lhggkp7q qq0sjtgm p5jrpzbl g6mp970w ln8gz9je jnl3jror" style="background-image: url(&quot;blob:https://web.whatsapp.com/bd45c444-3e4d-41e6-a8f7-107e40f7ff57&quot;);"></div></div></button></div></div></div><div style="padding-top: 100%;"></div></div>
    
  • 图片XPath:
    //*@id="app"]/div/div[2]/div[5]/span/div/span/div/div[2]/span/div/div/div[1]/div/div[22]/div[2]/div/div[2]/button/div/div
    
  • 提取的图片链接:
    blob:https://web.whatsapp.com/bd45c444-3e4d-41e6-a8f7-107e40f7ff57
    

提取日期的可行方案

方案1:直接读取列表项的属性或隐藏元素

WhatsApp网页版的媒体列表项(即你拿到的role="listitem"的div)通常包含日期相关信息:

  1. 检查aria-label完整内容:当前aria-label仅显示" image",实际完整标签会包含日期/时间(如"2024-05-20 14:30 image")。可通过XPath提取该属性值:

    //div[@role="listitem" and contains(@aria-label, "image")]/@aria-label
    

    再用正则匹配出日期部分,比如\d{4}-\d{2}-\d{2}或对应格式。

  2. 查找隐藏时间戳元素:若aria-label无完整日期,可查看listitem下的隐藏子元素(class名可能随版本变化,需在开发者工具中确认),通过XPath提取文本:

    //div[@role="listitem" and contains(@aria-label, "image")]//div[contains(@class, "t1p8iaqh")]/text()
    

方案2:跳转至聊天界面提取时间戳

如果网格视图中无法直接获取日期,可模拟点击图片进入聊天上下文:

  1. 点击当前图片对应的按钮(你已有XPath定位父元素),进入消息所在的聊天界面。
  2. 提取消息气泡上的时间戳:通常在带有data-pre-plain-text属性的元素中,格式为"[2024-05-20 14:30] ",直接截取即可:
    //div[contains(@class, "message-in") or contains(@class, "message-out")]//span[@class="copyable-text"]/@data-pre-plain-text
    

方案3:读取浏览器本地存储数据

WhatsApp网页版会将聊天数据存在浏览器的IndexedDB中,可通过JavaScript直接读取媒体对应的日期:

// 读取IndexedDB中的WhatsApp媒体消息日期
indexedDB.open("WhatsApp Web").onsuccess = function(e) {
  const db = e.target.result;
  const transaction = db.transaction(["messages"], "readonly");
  const store = transaction.objectStore("messages");
  store.openCursor().onsuccess = function(e) {
    const cursor = e.target.result;
    if (cursor) {
      if (cursor.value.type === "image") {
        console.log("日期:", new Date(cursor.value.timestamp * 1000).toLocaleDateString());
      }
      cursor.continue();
    }
  }
};

这里的timestamp是Unix时间戳,乘以1000后转换为日期对象即可得到对应日期。


内容的提问来源于stack exchange,提问作者Pradeep Raje

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 04:54:55