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

Python循环读取CSV重复取首行问题:Instagram登录系统修复

解决Instagram批量登录重复读取同一账号的问题

问题根源

你的代码出现重复读取同一账号的原因有三个:

  1. 全局变量df初始化后从未更新,函数内修改的是局部df,不影响全局变量,导致每次登录都取初始df的第0行
  2. 循环写法错误:for line in len(df)是无效的,len(df)返回整数,无法直接迭代
  3. 每次循环没有重新读取最新的CSV文件,始终基于初始数据执行

修复方案

修改后的代码核心逻辑改为每次循环前读取最新CSV,处理首行后删除并保存,确保下一次循环拿到新的首行:

import pandas as pd
import time
from selenium import webdriver
import undetected_chromedriver as uc
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

CSV_PATH = '/Users/giuseppeleonardi/Downloads/scraping2.csv'

def instagram_login(username, password):
    driver.get('https://www.instagram.com/')
    driver.maximize_window()
    time.sleep(2)
    
    # 处理隐私弹窗
    try:
        consent_btn = driver.find_element(By.XPATH, "/html/body/div[2]/div/div/div/div[2]/div/div/div[1]/div/div[2]/div/div/div/div/div[2]/div/button[2]")
        consent_btn.click()
    except:
        pass
    
    time.sleep(5)
    # 输入账号密码
    username_input = driver.find_element(By.NAME, "username")
    username_input.send_keys(username)
    
    password_input = driver.find_element(By.NAME, "password")
    password_input.send_keys(password)
    
    time.sleep(2)
    # 点击登录
    login_btn = driver.find_element(By.XPATH, "//div[contains(text(),'Accedi')]")
    login_btn.click()
    time.sleep(6)

# 初始化浏览器
driver = uc.Chrome()

try:
    while True:
        # 每次循环读取最新的CSV
        df = pd.read_csv(CSV_PATH)
        if df.empty:
            print("所有账号已处理完毕")
            break
        
        # 获取首行的账号密码
        first_row = df.iloc[0]
        username = first_row['ID']
        password = first_row['PASSWORD']
        
        print(f"正在登录账号: {username}")
        instagram_login(username, password)
        
        # 删除首行并保存回CSV
        df = df.drop(0, axis=0)
        df.to_csv(CSV_PATH, index=False)
        
        # 清理cookie,准备下一次登录
        driver.delete_all_cookies()
        time.sleep(5)
finally:
    # 关闭浏览器
    driver.quit()

关键修改点说明

  • 把CSV路径抽成常量CSV_PATH,避免重复写路径
  • 重构instagram_login函数,直接接收账号密码作为参数,不再依赖全局变量或剪贴板(剪贴板容易出问题,直接传参更可靠)
  • 改用while True循环,每次读取最新CSV,判断是否为空来终止循环,避免初始len(df)的限制
  • 每次循环都重新读取CSV,确保拿到删除首行后的最新数据
  • 增加try-finally块,确保浏览器最终会关闭,避免资源泄漏
  • 移除了无用的names、random导入,精简代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 04:51:12