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

WebScraping爬取Telegram网页版语音时长失败问题求助

问题原因及解决方案

核心原因

你的代码爬不到目标元素,主要是这几个问题:

  • 动态内容未加载:Telegram网页版是单页应用,初始HTML仅包含页面框架,聊天内容、语音时长这类元素都是浏览器执行JavaScript后动态渲染出来的。requests库只能获取静态初始HTML,不会运行JS,自然拿不到这些动态生成的元素。
  • 缺少登录验证:访问个人聊天页面需要登录状态,requests.get是无状态请求,没有携带你的登录Cookie或认证令牌,服务器只会返回未登录的框架页面,不会返回你的聊天数据。
  • 代码变量错误:你定义了解析后的对象soup2,但后续调用的是soup.find_all,变量名不匹配,这也会导致无法正确查找元素。
  • 前端路由无效:URL中的#@myname是前端路由,服务器不会处理这部分内容,requests请求时服务器返回的还是初始页面,不会自动跳转到指定聊天窗口。

解决方案

  1. 用支持JS渲染的工具爬取
    改用Selenium或Playwright这类模拟真实浏览器的工具,它们会自动执行JS并加载动态内容。示例(Selenium):

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from bs4 import BeautifulSoup
    import re
    import time
    
    # 初始化浏览器驱动(需提前下载对应浏览器的驱动,比如ChromeDriver)
    driver = webdriver.Chrome()
    driver.get('https://web.telegram.org/k/#@myname')
    
    # 留足时间手动完成登录
    time.sleep(10)
    
    # 获取渲染后的完整页面源码
    page_source = driver.page_source
    soup = BeautifulSoup(page_source, 'lxml')
    audio_elements = soup.find_all('div', class_=re.compile('audio-time'))
    if audio_elements:
        print(audio_elements[0].text)
    else:
        print("未找到目标元素")
    
    driver.quit()
    
  2. 修正代码变量名
    把代码中的soup.find_all改成soup2.find_all,确保变量引用一致,避免低级错误。

  3. 携带登录Cookie(仅辅助,仍可能无法获取动态内容)
    如果坚持用requests,可以先在浏览器登录Telegram Web,通过开发者工具复制登录后的Cookie,在请求时携带:

    import requests
    from bs4 import BeautifulSoup
    import re
    
    telegramURL = 'https://web.telegram.org/k/'
    headers = {
        'Cookie': '粘贴你浏览器中Telegram页面的Cookie内容'
    }
    audiolength = requests.get(telegramURL, headers=headers)
    soup2 = BeautifulSoup(audiolength.text, 'lxml')
    audio2 = soup2.find_all('div', class_=re.compile('audio-time'))
    print(audio2)
    

    注意:Cookie有有效期,过期后需要重新获取,且这种方式仍可能拿不到动态加载的聊天数据,因为核心内容还是通过JS异步接口拉取的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:25:23