Python 3和Selenium-如何组合多个For循环-抓取Web表

时间:2020-01-14 21:22:08

标签: python-3.x for-loop selenium-webdriver html-table selenium-chromedriver

我对Python(和堆栈溢出)是完全陌生的,我正在尝试寻找一种有效的方法来从内部网站(具有多个页面)中的表中提取数据。

以下代码可以正常工作,但是由于该网站有16页,因此我需要找到一种方法来简化此For循环。

任何帮助将不胜感激。谢谢

\\\

first = '//*[@id="container"]/table/tbody/tr['
second ="]/td["
last = "]"

for n in range(1,rows+1):
    for m in range(1,cols+1):
        final_path = (first+str(n)+second+str(m) + last)
        table = driver.find_element_by_xpath(final_path).text
        print(table, end= " ")
    print()

#  - Click on Page 2 and get all the table data from there.

driver.find_element_by_link_text("2").click()

for n in range(1,rows+1):
    for m in range(1,cols+1):
        final_path = (first+str(n)+second+str(m) + last)
        table = driver.find_element_by_xpath(final_path).text
        print(table, end= " ")
    print()

#  - Click on Page 3 and get all the table data from there.

driver.find_element_by_link_text("3").click()

for n in range(1,rows+1):
    for m in range(1,cols+1):
        final_path = (first+str(n)+second+str(m) + last)
        table = driver.find_element_by_xpath(final_path).text
        print(table, end= " ")
    print()

\\\

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以添加另一个封闭的for循环。

for page_no in range(2, 17): # 2...16
    driver.find_element_by_link_text(str(page_no)).click()

    for n in range(1,rows+1):
        for m in range(1,cols+1):
            final_path = (first+str(n)+second+str(m) + last)
            table = driver.find_element_by_xpath(final_path).text
            print(table, end= " ")
        print()
相关问题