繁体   English   中英

从嵌套循环写入 output 到 csv ?

[英]Write output to csv from nested loop?

我在一个较大的循环中有几个循环,我需要将 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 中?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM