将索引附加到for循环以进行分页

时间:2018-05-20 05:45:23

标签: python selenium pagination enumerate

我正在使用selenium来抓取目录,我正在使用枚举运算符来为我提供索引。问题是每次我进入idx重新开始的新页面。例如,如果每页有15个列表,我得到idx重复0-15表示150个列表。如何在分页中为每个页面添加idx?

while next_page is not None:
    for idx, company in enumerate(company_links_elements):
        company_id = idx
        company_url = company.get_attribute("href")
        # company_name = company.get_attribute("text")
        # company_address = remove_html_tags(company_address_elements[idx].get_attribute("innerHTML"))
        # writer.writerow((company_name, company_url, company_address))
        writer.writerow((idx, company_url))
    time.sleep(random.randint(1, 3))
    next_page.click()

2 个答案:

答案 0 :(得分:0)

尝试在idx循环之外定义while并在for循环的每次迭代中递增它。像这样:

idx = 0
while next_page is not None:
    for company in company_links_elements:
        company_url = company.get_attribute("href")
        writer.writerow((idx, company_url))
        idx += 1

    time.sleep(random.randint(1, 3))
    next_page.click()

答案 1 :(得分:0)

您可以使用enumerate执行此类操作,只需将可选的start参数传递给它即可。这是一个简短的演示:

idx = 0
for i in range(3):
    print('Page', i)
    for k, val in enumerate('abc', idx):
        print(k, val)
    idx = k + 1

<强>输出

Page 0
0 a
1 b
2 c
Page 1
3 a
4 b
5 c
Page 2
6 a
7 b
8 c