在较大的循环中有多个循环,我需要将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?
答案 0 :(得分:0)
对于遇到相同问题的其他任何人,问题都不是写入.csv的语法。要在嵌套循环中写入.csv,我上面发布的语法是正确的。
在这种情况下的问题是,我试图在object
循环中找到的元素try
未被找到,因此正在写空行,而对象却在except
循环。我在try
中使用了if / else语句,将一个“找不到元素”单元格写入csv。或者,您可以将其留空。