许多Selenium浏览器执行相同的任务(python)

时间:2016-10-02 20:54:46

标签: python selenium parallel-processing

我有一个标识网站的ID列表。我需要这样做:

Open a browser
open a main website that allows a query
for id in ids:
    -search in the main website the id,
    so that I get the website corresponding to the id with the browser
    -load the website corresponding to id with the browser
    -do some stuff with the info in the website

每个循环可能需要10秒钟。如果我有很多ID,这当然是一个问题。

我注意到循环是独立的。这就是说,如果我将id列表分成2,写下2个看起来像上面方框的python脚本并从不同的终端运行它我将花费一半的时间。有没有办法在不同的浏览器中同时进行循环(比如说6个循环)? (实际上所有这些都是Firefox,但不同的窗口)。

我想要做的是创建一个id队列,并在主网站上有一个(例如6个)Firefox窗口。队列中的第一个id将转到第一个窗口,循环开始。第二个id ...等....当一个循环完成时(比如窗口编号3比其他每个窗口更早完成它的循环),然后该窗口可用于下一个循环,因此队列中的下一个id将是由那个窗口处理。

很抱歉,如果我的语言不是很技术性的话。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

如果你认为将它分成两部分将有助于加快速度,那么你可以做到这一点(进一步的分裂技术)。

1)编写一个以网站ID为参数的函数。

2)写一个for循环,再次调用def并再次发送nenxt id。

这样的事情:

def check(id):
    open("id")

ids=[id1, id2, ...]

for id in ids:
    check(id)