首页 > 解决方案 > 使用 Selenium Python 并发访问 Instagram

问题描述

早上好,

考虑下面的代码(每个块对应一个笔记本单元):

def run_pilot():
driver = webdriver.Chrome('C:/Users/sample/Desktop/chromedriver_win32/chromedriver.exe')
driver.get("http://www.instagram.com")
# [...] (lines of code that accept cookies, send username and password)
return driver 

第二个细胞

def thread_function(id):
    driver = run_pilot()
    driver.get('http://www.instagram.com/'+ "apple")
    driver.get('http://www.instagram.com/'+ "samsung")
    print("done  " + str(id))
    #...task to be done [...]

第三细胞

import concurrent.futures

nthreads=2
main_pilot = run_pilot() #--- this creates the main pilot

with concurrent.futures.ThreadPoolExecutor(max_workers=nthreads) as executor:
    for i in range(nthreads):
        executor.map(thread_function(i))  #2 new pilots should be created **concurrently**

预期行为:首先应该创建主飞行员,然后应该同时创建另外两个飞行员,以便它们同时执行相应的功能。

观察到的行为:主飞行员正确启动,但由于某种原因,当线程池跳入时,任务按顺序完成,而不是像我试图实现的那样并行完成。换句话说,当创建第二个飞行员时,它会登录网站并访问链接,然后立即创建下一个飞行员。我想要做的是线程同时工作,以便所有线程同时执行该函数。因此,窗口应该并行工作。

非常感谢所有帮助。

标签: pythonmultithreadingseleniumconcurrencyinstagram

解决方案


推荐阅读