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

Instagram网页自动化:获取私信发送者文本失败求助

解决Selenium无法定位Instagram私信发送者元素的问题

问题原因

你用By.CLASS_NAME传入多个类名的写法是错误的——By.CLASS_NAME仅支持单个类名,多个类名会被当作一个完整的类名去匹配,自然找不到对应元素。另外你当前代码里用send_keys(Keys.RETURN)是触发回车操作,而你的需求是获取私信发送者的文本内容,这部分逻辑也不对。

解决方案

  1. 改用CSS选择器定位:把多个类名用.连接(注意去除类名间的多余空格),这是定位多类名元素的正确方式
  2. 添加显式等待:确保元素加载完成后再进行操作,比硬等待更高效可靠
  3. 获取元素文本:通过.text属性提取私信发送者的内容

修改后的代码

from selenium.webdriver.chrome.options import Options
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

opt = Options()
opt.add_experimental_option("debuggerAddress", "localhost:1234")

driver = webdriver.Chrome(executable_path="C:\Program Files (x86)\chromedriver.exe", options=opt)

# 显式等待元素可见,最长等待10秒
wait = WebDriverWait(driver, 10)
sender_element = wait.until(EC.visibility_of_element_located(
    (By.CSS_SELECTOR, "._ab8w._ab94._ab97._ab9f._ab9k._ab9p._ab9_.aba8._abcm")
))

# 获取私信发送者的文本内容并打印
sender_text = sender_element.text
print("私信发送者:", sender_text)

额外说明

  • 如果元素在iframe内,需要先切换到iframe再定位:driver.switch_to.frame("iframe_id_or_name")(如果没有ID/name,也可以用元素定位iframe)
  • Instagram的类名会不定期更新,如果后续再次出现定位失败,需要重新检查页面元素的最新类名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:10:57