从文本文件读取内容并自动写入该信息以登录网站时遇到麻烦。
到目前为止,我已经编写了一些代码,这些代码将从文本文件中读取并将前两行写入网站。
我所有的帐户和密码都以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])
答案 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()
来减少可能的错误,特别是从文件中读取行尾,空格或制表符。我想比较安全而不是后悔。