首页 > 解决方案 > Selenium 嵌套循环到下一页

问题描述

我已经使用 Selenium 构建了一个脚本,该脚本循环一个页面,打印数据并转到下一页并执行相同的操作。

现在我正在尝试将数据保存到 CSV 文件,因此需要创建一个嵌套循环 - 目前我正在多次重复循环(如下所示)。

如何创建嵌套循环然后保存到 CSV 文件?

如果脚本获得最后一页并且它们不是那里的下一步按钮,脚本也会失败吗?

谢谢 - 这是我正在使用的代码。

from selenium import webdriver
import time

browser = webdriver.Firefox(executable_path="/Users/path/geckodriver")

browser.get('https://www.tripadvisor.co.uk/Restaurants-g186338-zfn29367-London_England.html#EATERY_OVERVIEW_BOX')


meci = browser.find_elements_by_class_name('property_title')

for items in meci:
    title = items.text
    href = items.get_attribute('href')
    print(title)
    print(href)

time.sleep(3)
browser.find_element_by_css_selector('.next').click()
time.sleep(3)
meci = browser.find_elements_by_class_name('property_title')

for items in meci:
    title = items.text
    href = items.get_attribute('href')
    print(title)
    print(href)

time.sleep(3)
browser.find_element_by_css_selector('.next').click()
time.sleep(3)
meci = browser.find_elements_by_class_name('property_title')

for items in meci:
    title = items.text
    href = items.get_attribute('href')
    print(title)
    print(href)

browser.quit()

标签: pythonpython-3.xseleniumselenium-webdriver

解决方案


我使用了 try-except 所以当没有下一个按钮时程序将退出。您可以将结果写入 CSV 文件,而不是打印。

while True:
    try:
        meci = browser.find_elements_by_class_name('property_title')

        for items in meci:
            title = items.text
            href = items.get_attribute('href')
            print(title)
            print(href)

        time.sleep(3)
        browser.find_element_by_css_selector('.next').click()
        time.sleep(3)
    except:
        break


browser.quit()

推荐阅读