如何检测Instagram用户是否直播?现有代码始终返回未直播问题排查
Instagram直播检测代码始终显示“用户未直播”的问题解决
你的代码不管目标用户是否直播都返回“未直播”,核心原因有两个:
- 静态请求无法获取动态内容:Instagram个人主页的直播状态是通过JavaScript异步加载的,
requests直接获取的是初始静态HTML,根本不包含直播相关的动态渲染元素。 - 动态类名失效:你依赖的
hzyi9是Instagram动态生成的类名,平台会频繁更新这类标识,固定写死的类名很快就会失效。
可行解决方案
方案1:使用Selenium模拟浏览器加载动态页面
Selenium会模拟真实浏览器行为,加载页面所有动态内容,能正确获取直播状态:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC username = "目标用户名" url = f"https://www.instagram.com/{username}/" # 初始化Chrome浏览器(需提前安装对应版本的ChromeDriver) driver = webdriver.Chrome() driver.get(url) try: # 等待10秒,查找页面中包含"LIVE"文本的元素(直播状态的标识) WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.XPATH, "//*[contains(text(), 'LIVE')]")) ) print(f"{username} 正在直播!") except: print(f"{username} 未直播。") finally: # 关闭浏览器 driver.quit()
方案2:使用Instagram官方Graph API(推荐)
通过官方API获取用户媒体数据,能合法且稳定地检测直播状态,需要先申请Instagram开发者账号并获取访问令牌:
- 调用
/{user-id}/media端点,返回的媒体数据中,直播内容的media_type字段会标记为LIVE。
注意事项
- 使用Selenium时,需确保浏览器驱动版本与浏览器版本匹配,频繁请求可能触发Instagram的人机验证,建议添加适当等待或登录后操作。
- 官方API是最稳定的方案,适合长期或批量检测场景,避免反爬限制。
内容的提问来源于stack exchange,提问作者mik
相关产品推荐
相关产品推荐

