自动登录脚本需要使用存储在 TXT 文件中的多个帐户登录



我在读取文本文件并自动写入该信息以登录网站时遇到一些问题。

到目前为止,我已经编写了一些代码,这些代码将从我的文本文件中读取并将前 2 行写入网站。

我所有的帐户和密码都是以这种格式编写的 -myusername:mypassword #id,并希望在不使用#id的情况下将myusername:mypassword和输入拆分到相应的区域。

我的问题是,我的机器人正在读取和写入文本文件的前两行,而不会拆分用户名和密码。我想只阅读第一行并拆分它们并将信息添加到网站,然后继续登录,然后注销并使用文本文件中的下一个用户名:密码重做该过程,直到它们全部使用。

到目前为止,我的代码看起来像这样

from selenium import webdriver
import getpass
def loginBOT(usr, pas):
br = webdriver.Firefox()
br.get("https://web.facebook.com/")
user = br.find_element_by_name("email")
user.clear()
user.send_keys(usr)
passwd = br.find_element_by_name("pass")
passwd.clear()
passwd.send_keys(pas)
btn = br.find_element_by_css_selector("#u_0_2")
btn.click()
if __name__ == "__main__":
file = open("accounts.txt", 'r')
info = file.readlines()
file.close()
loginBOT(info[0],info[1])      

如果这是文件的格式:

myusername:mypassword #id
myusername:mypassword #id
myusername:mypassword #id

然后,您可以将代码修改为:

if __name__ == "__main__":
with open("accounts.txt") as f:
for i, line in enumerate(f):
line = line.strip()
print('line {:3d}: {}'.format(i, line))
if len(line) > 0:
# this will only run when the line is NOT empty
data, _ = line.split('#')
usr, pwd = data.split(':')
usr = usr.strip()
pwd = pwd.strip()
print('line {:3d} usr: {}'.format(i, usr))
print('line {:3d} pwd: {}'.format(i, pwd))
loginBOT(usr, pwd)

注意:我经常使用.strip()来减少可能的错误数量,特别是从文件中读取的行尾、空格或制表符。我喜欢安全而不是后悔。

最新更新