【发布时间】:2019-10-03 15:50:45
【问题描述】:
我是 StackOverflow 的新手,所以我真的很兴奋! ???
我的代码存在以下问题:我正在尝试将“png”图像存储到 FTP 服务器(网站的屏幕截图)。
我正在使用 ftplib 和 selenium(带有 webdriver):
driver.get(<someURL>)
screenshot = driver.save_screenshot(driver.title + '.png')
ftp.storbinary("STOR <PathToServer>" + driver.title + '.png', open(driver.title + '.png', 'rb'))
这种方法适用于网站是用拉丁字符编写的,问题是图像可能是位于泰国、中国或埃及的网站的屏幕截图。在这种情况下,带有以下内容的行:
open(driver.title + '.png', 'rb')
返回臭名昭著的错误:
UnicodeEncodeError: 'latin-1' codec can't encode character '\u1ec7' in position 60: ordinal not in range(256)
我知道 storbinary 只接受二进制数(正如该方法的名称所暗示的那样)。但是,我不明白的是如何对 png 进行“编码”,使其不会导致该错误,从而可以成功地将其存储到 FTP 服务器中。
非常感谢!任何帮助、评论或见解,将不胜感激。 最好的!
【问题讨论】:
-
我假设它是文件名?您使用
driver.title作为 .png 名称,这很可能是问题出在哪里。您可能需要将页面标题“转换”为没有非拉丁字符的内容。也许使用 URL 的某些部分,假设它也没有非拉丁字符。 -
非常感谢 JeffC。我尝试了不同的通用标题,它们没有任何非拉丁字符。它不起作用,不幸的是,我在尝试将 png 存储到 FTP 服务器时仍然遇到 Unicode 错误。但我很欣赏你的评论。
标签: python selenium unicode ftp ftplib