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

时间:2018-09-15 13:01:26

标签: python text split

从文本文件读取内容并自动写入该信息以登录网站时遇到麻烦。

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

我所有的帐户和密码都以myusername:mypassword #id这样的格式编写,并且希望拆分myusername:mypassword并输入到相应的区域,而无需使用#id

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

到目前为止,我的代码是这样

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])      

1 个答案:

答案 0 :(得分:0)

如果这是您的文件格式:

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()来减少可能的错误,特别是从文件中读取行尾,空格或制表符。我想比较安全而不是后悔。