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

Selenium获取Instagram用户粉丝数问题求助

Selenium获取Instagram用户粉丝数问题求助

看起来你在尝试用Selenium抓取Instagram用户的粉丝数,但遇到了定位元素返回空列表的问题,我来帮你分析下可能的原因和解决办法。

问题根源分析

你当前的代码返回空列表,大概率是两个原因:

  1. 页面动态加载未完成:Instagram是动态渲染的页面,你直接调用find_elements时,目标元素还没渲染出来,自然找不到内容。
  2. 定位方式不够精准://span[@class="_ac2a"]/span这个XPATH可能匹配多个元素(比如帖子数、关注数也会用类似的class),或者没有命中粉丝数对应的元素。

解决方案一:显式等待+精准定位

我们可以用WebDriverWait等待元素加载完成,同时结合粉丝区域的特征来精准定位,避免和其他数字混淆:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# 原有代码部分
username = self.username
driver.get(f"https://www.instagram.com/{username}/")

try:
    # 等待粉丝数元素加载,最多等待10秒
    # 通过粉丝链接的href特征定位父元素,再找里面的数字span
    followers_element = WebDriverWait(driver, 10).until(
        EC.visibility_of_element_located(
            (By.XPATH, '//a[contains(@href, "/followers/")]/span[@class="_ac2a"]/span')
        )
    )
    followers_count = followers_element.text.strip()
    return {
        "data": followers_count,
        "message": f"Followers found for user {self.username}",
    }
except Exception as e:
    message = f"{self.username} not found! Error: {str(e)}"
    return {"data": None, "message": message}

解决方案二:解析meta标签(更稳定)

你之前注释掉的meta标签解析方法其实更靠谱,不需要处理动态元素的加载问题,直接从页面的meta信息里提取粉丝数,受页面结构变化的影响更小:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

username = self.username
driver.get(f"https://www.instagram.com/{username}/")

try:
    # 等待页面基础元素加载完成
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.TAG_NAME, "meta"))
    )
    # 获取描述信息的meta标签
    followers_meta = driver.find_element(By.XPATH, '//meta[@name="description"]')
    content = followers_meta.get_attribute("content")
    # 拆分内容提取粉丝数(格式示例:"216 followers, 123 following, 45 posts")
    followers_count = content.split(",")[0].split(" ")[0]
    return {
        "data": followers_count,
        "message": f"Followers found for user {self.username}",
    }
except Exception as e:
    message = f"{self.username} not found! Error: {str(e)}"
    return {"data": None, "message": message}

额外注意事项

  • 如果抓取的是非公开账号,需要先完成Instagram登录,否则页面会跳转到登录页导致定位失败。
  • Instagram有反爬机制,不要频繁请求页面,建议在操作间添加适当的等待时间,避免被限制访问。

备注:内容来源于stack exchange,提问作者Karthik Bhandary

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 10:18:14