我如何转换这个 selenium 下一个按钮点击代码成循环,这样我就可以得到所有网页的网址,直到下一个按钮消失

thtygnil  于 2022-12-18  发布在  其他
关注(0)|答案(2)|浏览(120)

你好,我写了这个 selenium 代码点击Next按钮,给予我下一页的网址。
问题是
1.我想在一个循环转换此代码,这样我就可以点击下一个按钮&收集所有网址,直到下一个按钮消失。
1.如何在列表中列出所有收集的URL?

next = driver.find_element(By.LINK_TEXT, "Next")
next.click()
urrl = driver.current_url
print(urrl)
driver.quit()

我尝试了While True循环。

while True:
    try:
        urrl = driver.current_url    **## I tried this line after clicking the next button as well**                       
        next = driver.find_element(By.LINK_TEXT,"Next")
        next.click()
    except:
        break

我能够点击下一步按钮,直到最后,但我不能弄清楚如何收集网址的网页,以及如何将它们附加到一个列表。
尝试附加,但我认为我做错了什么。

bbmckpt7

bbmckpt71#

您可以编写一个函数来测试元素是否存在:

def is_element_exists(xpath, id_flag=False):
    try:
        if id_flag:
            driver.find_element_by_id(xpath)
        else:
            driver.find_element_by_xpath(xpath)
        return True
    except Exception as e:
        # print("Excpetion:[%s][%s]" % (e, traceback.format_exc()))
        print('do not find the node')
    return False
eqqqjvef

eqqqjvef2#

您可以定义一个列表对象,并将收集的URL附加到该对象中,如下所示。
列表应该在循环之前和循环之外定义。

urls = []
while True:
    try:
        urrl = driver.current_url
        urls.append(urrl)
        next = driver.find_element(By.LINK_TEXT,"Next")
        next.click()
    except:
        break
print(urls)

上面的代码是通用的。可能你需要滚动到“下一步”按钮,等待它变成可点击的等等。

相关问题