如何使用Pandas逐行读取Excel,结合Selenium实现Facebook登录循环
使用Pandas+Selenium实现Facebook批量自动登录
一、先修正你Pandas读取Excel的代码
你的原代码里有两个明显问题:一是f1变量没定义就直接用,会直接报错;二是for i in df遍历的是列名,不是每行的数据,根本拿不到账号密码。先把这部分改对:
import pandas as pd # 直接读取Excel到DataFrame,不用多此一步再转一次 df = pd.read_excel(r'file.xlsx') # 先确认下Excel里的列名是不是和你写的'Name'、'Pass'一致,避免列名不匹配报错 print("Excel里的列:", df.columns.tolist()) # 两种逐行遍历的方法,选一种就行 # 方法1:用iterrows(),能拿到行索引和行数据 for index, row in df.iterrows(): username = row['Name'] password = row['Pass'] print(f"当前账号:{username},密码:{password}") # 方法2:用itertuples(),比iterrows()效率高,适合数据量大的情况 for row in df.itertuples(index=False): username = row.Name password = row.Pass print(f"当前账号:{username},密码:{password}")
二、结合Selenium实现Facebook自动登录
1. 先准备依赖
先装Selenium:
pip install selenium
然后下载对应浏览器的驱动(比如Chrome的ChromeDriver,版本要和你电脑上的Chrome版本匹配),把驱动放到Python能找到的路径,或者代码里直接指定驱动路径。
2. 完整可运行代码
import pandas as pd 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 import time # 读取Excel里的账号密码 df = pd.read_excel(r'file.xlsx') # 初始化Chrome驱动,要是驱动不在系统PATH里,就加executable_path参数指定路径,比如: # driver = webdriver.Chrome(executable_path=r'C:\你的驱动路径\chromedriver.exe') driver = webdriver.Chrome() driver.maximize_window() # 逐行登录每个账号 for index, row in df.iterrows(): username = row['Name'] password = row['Pass'] print(f"正在登录账号:{username}") driver.get('https://www.facebook.com/login/') try: # 等用户名输入框加载出来,再输入账号(避免页面没加载完报错) username_input = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, 'email')) ) username_input.clear() username_input.send_keys(username) # 输入密码 password_input = driver.find_element(By.ID, 'pass') password_input.clear() password_input.send_keys(password) # 点击登录按钮 login_btn = driver.find_element(By.NAME, 'login') login_btn.click() # 给点时间让页面跳转,也可以加判断检查是否登录成功 time.sleep(3) # 如果要批量登录多个账号,这里可以加退出登录的逻辑,比如: # driver.get('https://www.facebook.com/logout.php') # time.sleep(2) except Exception as e: print(f"账号{username}登录失败:{str(e)}") continue # 全部完成后关闭浏览器 driver.quit()
三、注意事项
- 确保Excel里的列名是
Name和Pass,大小写要和代码里一致,不然会找不到数据。 - Facebook有反爬机制,短时间内登太多账号大概率会触发验证码或者账号限制,别搞太猛,适当延长等待时间。
- Selenium版本和浏览器驱动版本必须匹配,版本不兼容会直接启动不了浏览器。
- 如果哪天登录页面的元素ID/Name变了,要自己重新定位元素(比如用F12开发者工具查新的元素选择器)。
内容的提问来源于stack exchange,提问作者Kira
相关产品推荐
相关产品推荐

