使用线程 Python 用于 Instagram BOT
Threading Using Python For Instagram BOT
我正在尝试用 selenium 制作一个可以同时使用多个帐户的 Instagram BOT。因此,我需要使用线程。我有 2 个帐户,用户名和密码保存在一个文本文件中。问题是,我无法同时登录这两个帐户。我必须在代码中做哪些更改才能做到这一点?
如有错误请见谅...
from selenium import webdriver
from time import sleep
import threading
def functions():
a = open('users.txt','r').readlines()
for i in a:
info = i.split()
driver = webdriver.Firefox()
driver.get('https://instagram.com')
sleep(5)
driver.find_element_by_name('username').send_keys(info[0])
driver.find_element_by_name('password').send_keys(info[1])
driver.find_element_by_class_name('sqdOP.L3NKy.y3zKF').click()
for _ in range(2):
t = threading.Thread(target=functions)
t.start()
您的代码的一个主要问题可能是每个线程读取整个文件,如果您的文件有两行,它将打开四个浏览器。
另一个问题是您在点击登录按钮之前,应该关闭 cookie 弹出窗口。
请注意,要启用登录按钮,密码长度必须至少为 6 个字符。
以下可以作为解决方案的示例:
from selenium import webdriver
from time import sleep
from concurrent.futures import ThreadPoolExecutor
def functions(line):
info = line.split()
driver = webdriver.Firefox()
driver.get('https://instagram.com')
sleep(5)
driver.find_element_by_class_name("mt3GC").find_element_by_class_name("aOOlW.bIiDR").click() # close cookie
driver.find_element_by_name('username').send_keys(info[0])
driver.find_element_by_name('password').send_keys(info[1])
driver.find_element_by_class_name('sqdOP.L3NKy.y3zKF').click()
if __name__ == '__main__':
a = open('users.txt', 'r').readlines()
with ThreadPoolExecutor(max_workers=2) as executor:
for i in a:
future = executor.submit(functions, i)
我正在尝试用 selenium 制作一个可以同时使用多个帐户的 Instagram BOT。因此,我需要使用线程。我有 2 个帐户,用户名和密码保存在一个文本文件中。问题是,我无法同时登录这两个帐户。我必须在代码中做哪些更改才能做到这一点?
如有错误请见谅...
from selenium import webdriver
from time import sleep
import threading
def functions():
a = open('users.txt','r').readlines()
for i in a:
info = i.split()
driver = webdriver.Firefox()
driver.get('https://instagram.com')
sleep(5)
driver.find_element_by_name('username').send_keys(info[0])
driver.find_element_by_name('password').send_keys(info[1])
driver.find_element_by_class_name('sqdOP.L3NKy.y3zKF').click()
for _ in range(2):
t = threading.Thread(target=functions)
t.start()
您的代码的一个主要问题可能是每个线程读取整个文件,如果您的文件有两行,它将打开四个浏览器。
另一个问题是您在点击登录按钮之前,应该关闭 cookie 弹出窗口。
请注意,要启用登录按钮,密码长度必须至少为 6 个字符。
以下可以作为解决方案的示例:
from selenium import webdriver
from time import sleep
from concurrent.futures import ThreadPoolExecutor
def functions(line):
info = line.split()
driver = webdriver.Firefox()
driver.get('https://instagram.com')
sleep(5)
driver.find_element_by_class_name("mt3GC").find_element_by_class_name("aOOlW.bIiDR").click() # close cookie
driver.find_element_by_name('username').send_keys(info[0])
driver.find_element_by_name('password').send_keys(info[1])
driver.find_element_by_class_name('sqdOP.L3NKy.y3zKF').click()
if __name__ == '__main__':
a = open('users.txt', 'r').readlines()
with ThreadPoolExecutor(max_workers=2) as executor:
for i in a:
future = executor.submit(functions, i)