Python 将链接保存到列表以避免过时的元素错误

Python 将链接保存到列表以避免过时的元素错误,python,selenium,web-scraping,Python,Selenium,Web Scraping,我在一个页面上点击一个按钮,加载下一个页面,我再次点击一个按钮,打开一个新窗口。从那里获取数据后,我关闭子窗口,返回父窗口,然后再次返回链接页面。问题是,我无法将链接保存到列表,因为链接是这样的 当然,到那时它们已经过时了。因此,无论是单击,还是驱动程序.get(url),都无法处理此问题。不管怎么说,关于这个 link_l = driver.find_elements_by_xpath('//table[3]//a') links = [] for li in link_l: lin

我在一个页面上点击一个按钮,加载下一个页面,我再次点击一个按钮,打开一个新窗口。从那里获取数据后,我关闭子窗口,返回父窗口,然后再次返回链接页面。问题是,我无法将链接保存到列表,因为链接是这样的

当然,到那时它们已经过时了。因此,无论是
单击
,还是
驱动程序.get(url)
,都无法处理此问题。不管怎么说,关于这个

link_l = driver.find_elements_by_xpath('//table[3]//a')
links = []
for li in link_l:
    link = li.get_attribute('href') #This will not work!
    links.append(link)
for i in range(len(links)):
    driver.get(links[i])
    driver.find_element_by_xpath('/html/body/form[1]/table[2]/tbody/tr/td/table/tbody/tr/td/table[3]/tbody/tr[2]/td[3]/a').click()
    all_windows = driver.window_handles
    child_window = [window for window in all_windows if window != parent_window][0]
    driver.switch_to.window(child_window)
    page = driver.page_source
    soup = BeautifulSoup(page, 'html.parser')
    tables = soup.findAll('table')
    dfs = []
    for table in tables:
        df_x = pd.read_html(str(table))
        print(df_x)
        df = pd.concat(df_x)
        dfs.append(df)
    df_f = pd.concat(dfs)
    df_f.to_csv(f'{i}result.csv')
    driver.close()
    driver.switch_to.window(parent_window)
    driver.back()
还是这个

driver.find_element_by_xpath('(//table[3]//a)[{}]'.format(i)).click()
您可能会使用基于xpath的方法,同时让元素的len先单击,然后再返回跟踪

driver.find_element_by_xpath('(//table[3]//a)[{}]'.format(i)).click()