我正在尝试将chromedriverpage_source
写入文件。失败:我看到一个空文件,没有错误消息。
问题不在于文件创建——我的问题不是,而不是。使用with open .. as f
正确打开文件,使用f.close
正确关闭文件。当用伪字符串"hello"替换驱动程序page_source时,该文件也会写得很好。
以下代码运行时没有错误消息,也创建了文件,但在0 KB时为空:
from selenium import webdriver
driver = webdriver.Chrome(r'chromedriver.exe', options=options)
driver.get(url)
with open('myFile.html', "w") as f:
f.write(driver.page_source)
f.close()
驱动程序运行良好,driver.page_source的值似乎也不错。如果我运行print(driver.page_source)
,它会显示一些有意义的HTML代码:
print(driver.page_source)
>>> <html lang="de" style="" class="js flexbox ...
以下代码运行时也没有出现错误,并产生预期的结果:一个包含字符串"hello"的文件:
from selenium import webdriver
driver = webdriver.Chrome(r'chromedriver.exe', options=options)
driver.get(url)
with open('myFile.html', "w") as f:
f.write('hello')
f.close()
为什么?
write
内部发生了什么,再加上driver.page_source
的实际值,会阻止文件写入?
您注意到在尝试写入文件时抛出的异常吗?是UnicodeEncodeError
吗?如果是这样,您需要添加所需的编码:
with open('myFile.html', "w", encoding='utf-8') as f:
此外,当您使用with
子句时,您不需要添加f.close()