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

Python Selenium获取账号粉丝用户名遇阻:无法获取全部211位粉丝

问题分析与解决方案

你的问题主要出在三个核心点:

  1. 硬编码循环上限208,无法适配实际加载的粉丝数量,且忽略了页面加载的不确定性
  2. 使用极易失效的绝对XPath,页面结构稍有变动就会定位失败
  3. 固定时长的sleep不能保证所有粉丝完全加载,存在漏加载或提前终止滚动的情况

修复方案

1. 改用相对XPath定位元素

放弃绝对路径,用相对路径定位粉丝面板和粉丝项的共同容器(以常见社交平台结构为例,需根据实际页面调整):

  • 粉丝面板:定位弹窗内的滚动容器
  • 粉丝项:定位所有粉丝卡片的共同父元素

2. 优化滚动加载逻辑

通过监控已加载粉丝数量替代滚动高度判断,确保加载完所有目标粉丝(211位):

  • 循环滚动直到已加载数量等于目标数,或连续两次滚动后数量不再增加(避免无限循环)
  • 用WebDriverWait显式等待新粉丝加载,替代固定sleep

3. 遍历已加载元素,避免索引错误

直接遍历所有加载完成的粉丝元素,不需要依赖索引循环,彻底规避索引越界问题


完整修复代码

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
import time

# 假设已完成登录并进入目标账号主页
wait = WebDriverWait(driver, 10)

# 定位粉丝面板(改用相对XPath,需根据实际页面调整类名)
following_panel = wait.until(
    lambda d: d.find_element_by_xpath("//div[@role='dialog']//div[contains(@class, 'scroll-container')]")
)

target_fans_count = 211
current_count = 0
last_count = -1

# 滚动加载所有粉丝
while current_count < target_fans_count and last_count != current_count:
    last_count = current_count
    # 滚动到面板底部
    driver.execute_script("arguments[0].scrollTo(0, arguments[0].scrollHeight);", following_panel)
    # 等待新粉丝加载完成
    wait.until(
        lambda d: len(d.find_elements_by_xpath("//div[@role='dialog']//div[contains(@class, 'fan-item')]")) > current_count
    )
    # 更新当前已加载粉丝数
    current_count = len(driver.find_elements_by_xpath("//div[@role='dialog']//div[contains(@class, 'fan-item')]"))
    time.sleep(1)  # 给页面缓冲时间

# 提取所有粉丝名称
list_of_followings = []
fan_items = driver.find_elements_by_xpath(
    "//div[@role='dialog']//div[contains(@class, 'fan-item')]/div[2]/div[1]/div/div/div/a/span/div"
)
for item in fan_items:
    try:
        fan_name = item.text
        if fan_name:
            list_of_followings.append(fan_name)
    except Exception as e:
        print(f"提取粉丝名称失败:{str(e)}")
        continue

print("粉丝列表:")
print(list_of_followings)
print("****************")
print(f"目标粉丝数:{target_fans_count},实际获取:{len(list_of_followings)}")

关键注意事项

  • 调整XPath中的类名:代码中的scroll-container和fan-item是示例类名,需用浏览器开发者工具查看目标页面的实际元素属性替换
  • 显式等待优先:WebDriverWait会等待元素加载完成再执行操作,比固定sleep更稳定
  • 异常处理:避免个别粉丝项加载异常导致整个程序崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 21:35:17