我正在尝试使用for循环在硒中循环进行2000次迭代。我已经创建了排列并为每个排列创建了单独的变量(使用Excel进行合并)。
我从A1 ... A2000中列出了我的变量。我需要将其放入一个列表中,以便可以在代码中使用for循环。他们唯一的方式就是知道用逗号分隔它(例如:A1,A2,A3 ...)是怎么回事,但这对于2000个变量来说是不现实的。
有什么建议吗?
变量按顺序列出,如下所示:
A1 = ('xpath text')
A2 = ('xpath text')
A2000 = ('xpath text')
我正在使用硒通过下拉列表进行网络爬取
for i in range(1, 2000):
xpathlist = [A&i]
for xp in xpathlist:
b.find_element_by_xpath(xp)
click = download.click()
答案 0 :(得分:0)
假设您在模块foo.py
中拥有所有这些变量:
import foo
all_vars = (getattr(foo, f'A{i}') for i in range(1, 2000))
其优点是不创建列表,而是在迭代时检索每个值。有关生成器here
的更多信息 注意::我使用了格式化字符串(f''
),它需要python 3.6+,而较旧的版本则使用'A{}'.format(i)
或'A%d' % i
。
答案 1 :(得分:0)
...使用excel合并它们...
我可能对此读得太多了,但是您可以通过以下方式绕过Excel:
from itertools import product
NAMES= ('x', 'y', 'z')
VALUES = ('foo', 'bar')
nvs = [f'{n} {v}' for n, v in product(NAMES, VALUES)]
print(nvs)
['x foo',
'x bar',
'y foo',
'y bar',
'z foo',
'z bar']
或用于排列(如您所述):
from itertools import permutations
VALUES = ('foo', 'bar', 'baz', 'qux')
perms = [f'{a}/{b}/{c}' for a, b, c in permutations(VALUES, 3)]
print(perms)
['foo/bar/baz', 'foo/bar/qux', 'foo/baz/bar', 'foo/baz/qux',
'foo/qux/bar', 'foo/qux/baz', 'bar/foo/baz', 'bar/foo/qux',
'bar/baz/foo', 'bar/baz/qux', 'bar/qux/foo', 'bar/qux/baz',
'baz/foo/bar', 'baz/foo/qux', 'baz/bar/foo', 'baz/bar/qux',
'baz/qux/foo', 'baz/qux/bar', 'qux/foo/bar', 'qux/foo/baz',
'qux/bar/foo', 'qux/bar/baz', 'qux/baz/foo', 'qux/baz/bar']
然后,您可以遍历列表nvs
或perms