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

Instagram自动滚动Reels功能失效,请求代码修复支持

Instagram Reels自动切换功能修复方案

问题分析

之前的尝试存在几个关键问题:

  • 未导入Keys模块,导致send_keys(Keys.ARROW_DOWN)无法执行
  • 通过page_source判断reelViewer存在的方式不可靠,页面动态渲染时容易出现误判
  • 等待条件设置不合理,没有准确监听视频播放状态
  • 未处理登录后可能出现的弹窗(如保存登录信息提示)

修复后的完整代码

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
from selenium.webdriver.common.keys import Keys  # 新增导入Keys模块
import time

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--disable-notifications")
chrome_options.add_argument("--disable-save-password-bubble")

driver = webdriver.Chrome(options=chrome_options)
driver.maximize_window()

username = input("Nickname:")
password = input("Password:")

driver.get("https://www.instagram.com")

# 等待用户名输入框加载并输入账号密码
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.NAME, "username")))
username_element = driver.find_element(By.NAME, "username")
password_element = driver.find_element(By.NAME, "password")
username_element.send_keys(username)
password_element.send_keys(password)

# 点击登录按钮
login_element = driver.find_element(By.XPATH, "/html/body/div[2]/div/div/div[2]/div/div/div[1]/section/main/article/div[2]/div[1]/div[2]/form/div/div[3]")
login_element.click()

# 处理登录后的"保存登录信息"弹窗
try:
    WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//div[text()='Not Now']")))
    not_now_btn = driver.find_element(By.XPATH, "//div[text()='Not Now']")
    not_now_btn.click()
except:
    pass  # 如果没有弹窗则跳过

# 等待Reels入口加载并进入
WebDriverWait(driver, 30).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div[2]/div/div/div[2]/div/div/div[1]/div[1]/div[1]/div/div/div/div/div[2]/div[4]/span/div/a")))
reelselement = driver.find_element(By.XPATH, "/html/body/div[2]/div/div/div[2]/div/div/div[1]/div[1]/div[1]/div/div/div/div/div[2]/div[4]/span/div/a")
reelselement.click()

# 自动切换Reels核心逻辑
try:
    while True:
        # 等待当前Reel视频元素加载完成
        video_element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.TAG_NAME, "video")))
        
        # 通过JavaScript获取视频总时长和当前播放进度
        duration = driver.execute_script("return arguments[0].duration", video_element)
        current_time = driver.execute_script("return arguments[0].currentTime", video_element)
        
        # 等待视频播放到接近结束(剩余1秒内)
        while current_time < duration - 1:
            time.sleep(1)
            current_time = driver.execute_script("return arguments[0].currentTime", video_element)
        
        # 模拟按下向下箭头切换到下一个Reel
        driver.find_element(By.TAG_NAME, 'body').send_keys(Keys.ARROW_DOWN)
        # 等待下一个Reel加载完成
        time.sleep(2)
        
except KeyboardInterrupt:
    print("用户手动终止程序")
except Exception as e:
    print(f"程序出错: {str(e)}")
finally:
    driver.quit()

代码关键说明

  • 导入Keys模块:解决之前无法发送键盘按键的问题
  • 处理登录弹窗:自动跳过"保存登录信息"提示,避免后续操作受阻
  • 视频状态监听:通过JavaScript获取视频的duration和currentTime,准确判断视频是否播放完毕,替代不可靠的页面源码判断
  • 稳定切换逻辑:视频播放接近结束时才执行向下滚动,确保切换时机准确,同时添加短暂等待保证下一个Reel加载完成

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 04:45:09