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

Python Selenium编写Instagram订阅者解析器:滚动模态窗口加载全部订阅者及XPATH定位失败求助

Python Selenium编写Instagram订阅者解析器:滚动模态窗口加载全部订阅者及XPATH定位失败求助

兄弟,我太懂你这种抓不到元素、滚动加载卡壳的憋屈感了!Instagram的模态窗口确实有点“矫情”,尤其是它的DOM结构经常偷偷更新,咱们一步步来解决这俩问题。

先搞定XPATH定位失败的问题

Instagram的订阅者模态窗口经常用动态生成的类名,你要是直接抄浏览器控制台里的XPATH,大概率过会儿就失效了。给你几个靠谱的定位思路:

  • 用稳定的属性替代动态类名:模态窗口通常带有role="dialog"属性,而且里面肯定有个显示“Followers”的标题,咱们可以结合这俩来定位,XPATH写法是:

    //div[@role='dialog' and .//h2[contains(text(), 'Followers')]]
    

    这个写法比依赖类名稳定多了,毕竟Instagram总不能随便改role属性和标题文本吧。

  • 一定要等元素加载完全:别刚点开订阅者按钮就急着定位,给页面留点加载时间,用WebDriverWait显式等待比硬sleep靠谱:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    wait = WebDriverWait(driver, 15)
    modal = wait.until(EC.visibility_of_element_located(
        (By.XPATH, "//div[@role='dialog' and .//h2[contains(text(), 'Followers')]]")
    ))
    
  • 排查是不是定位到了重复元素:如果还是找不到,你可以用find_elements代替find_element,打印出所有匹配的元素,看看是不是定位到了页面上其他类似的对话框。

再解决滚动加载所有订阅者的问题

直接给页面发PAGE_DOWN大概率没用,因为焦点不在模态窗口的滚动容器里。正确的做法是定位到模态里的滚动列表容器,然后用JavaScript来触发滚动:

完整的滚动加载代码示例

import time
import random

# 先定位到刚才的模态窗口(上面已经搞定了)
scroll_container = modal.find_element(By.XPATH, ".//div[contains(@style, 'overflow-y: scroll')]")

# 初始化滚动高度
last_scroll_height = driver.execute_script("return arguments[0].scrollHeight", scroll_container)

while True:
    # 滚动到容器底部
    driver.execute_script("arguments[0].scrollTop = arguments[0].scrollHeight", scroll_container)
    # 随机延迟,避免触发反爬机制
    time.sleep(random.uniform(2, 3.5))
    # 获取新的滚动高度
    new_scroll_height = driver.execute_script("return arguments[0].scrollHeight", scroll_container)
    # 如果高度不变,说明没有新订阅者了,退出循环
    if new_scroll_height == last_scroll_height:
        break
    last_scroll_height = new_scroll_height

print("所有订阅者都加载完啦!")

额外提醒

  • 反爬注意:别把循环里的延迟设得太短,频繁滚动很容易被Instagram限制甚至封号,用随机延迟能降低被检测的概率。
  • 如果还是找不到滚动容器:可以打开浏览器控制台,在订阅者模态里找带有overflow-y: scroll样式的div,或者直接找列表的父容器,用更精准的XPATH定位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 13:28:04