将输出从嵌套循环写入csv?

时间:2020-04-29 00:15:11

标签: python csv

在较大的循环中有多个循环,我需要将csv文件写入两次:

已更新,更详细的示例

with open("file.csv", "w", encoding="utf-8", newline="") as file:
    writer = csv.writer(file)
    while True:
        try:
            element = driver.find_element_by_xpath(xpath)
            if element.is_displayed():
                nextbtn=driver.find_element_by_xpath(xpath).click()
                object=driver.find_element_by_xpath(xpath)
                writer.writerows(object)
        except NoSuchElementException:
            urls=driver.find_elements_by_xpath(xpath)
            urls= [url.get_attribute('href') for url in urls]

            for url in urls:
                driver.get(url)
                object = driver.find_element_by_xpath(xpath)
                writer.writerows(object)

本质上,代码正在执行的测试是检查是否存在某个元素。如果存在该元素,则单击下一个按钮。单击下一个按钮后,将抓取特定元素object并将其写入csv。

如果某个元素不存在,则代码将收集一个URL列表,然后针对每个URL刮除元素object并将其打印到csv。

无论导航到哪个页面,我都需要object元素。但是,问题在于写入csv,因为try的结果未写入csv。尽管object的位置在两个页面上都相同,但是object的值因页面而异。

我将如何重写此代码,以使两个结果都写入相同的.csv?

1 个答案:

答案 0 :(得分:0)

对于遇到相同问题的其他任何人,问题都不是写入.csv的语法。要在嵌套循环中写入.csv,我上面发布的语法是正确的。

在这种情况下的问题是,我试图在object循环中找到的元素try未被找到,因此正在写空行,而对象却在except循环。我在try中使用了if / else语句,将一个“找不到元素”单元格写入csv。或者,您可以将其留空。