Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-pilsave&;使用alt描述从HTML文件重命名图像_Python_Image_Save_Python Imaging Library - Fatal编程技术网

Python-pilsave&;使用alt描述从HTML文件重命名图像

Python-pilsave&;使用alt描述从HTML文件重命名图像,python,image,save,python-imaging-library,Python,Image,Save,Python Imaging Library,我正在尝试基于此线程保存html文件中的图像 导入操作系统,操作系统路径 从PIL导入图像 从bs4导入BeautifulSoup作为bs 路径='c:/Users/Desktop/html/' 对于os.walk(路径)中的根、目录和文件: 对于文件中的f: soup=bs(open(os.path.join(root,f)),'lxml') 对于汤中的图像。查找所有(“img”): image=image.get('src') alt=image.get('alt') im=Image.o

我正在尝试基于此线程保存html文件中的图像

导入操作系统,操作系统路径
从PIL导入图像
从bs4导入BeautifulSoup作为bs
路径='c:/Users/Desktop/html/'
对于os.walk(路径)中的根、目录和文件:
对于文件中的f:
soup=bs(open(os.path.join(root,f)),'lxml')
对于汤中的图像。查找所有(“img”):
image=image.get('src')
alt=image.get('alt')
im=Image.open(os.path.join(root,Image))
保存(路径+图像+alt,“png”)
打印(os.path.join(根目录,图像))
html文件的内容
映像的完整文件路径为

c:/Users/Desktop/html/images/1.jpg 之后 c:/Users/Desktop/html/images/Image1Name.png

我已经看过这些线索:

错误

soup=bs(open(os.path.join(root,f)),'lxml') 文件“C:\Python\Python36-32\lib\site packages\bs4\uuuuu init\uuuuuu.py”,第191行,位于init markup=markup.read() 文件“C:\Python\Python36-32\lib\encodings\cp1252.py”,第23行,解码 返回编解码器.charmap\u解码(输入、自身错误、解码表)[0] UnicodeDecodeError:“charmap”编解码器无法解码位置77:字符映射到的字节0x81


如何使用alt描述正确保存和重命名html文件中的图像?

我没有遇到您的编码问题,因此我无法帮助您

不过为了帮点忙,我将im.save(path+image+alt,“png”)更改为im.save(os.path.join(path,os.path.dirname(image),alt+'.png'))

  • 用os.path.join替换+符号只是为了提高通用性 处理
  • 将映像替换为os.path.dirname(映像)是因为 不要“images/1.jpg”,你要的是“images”
  • 正在将“.png”添加到alt 因为您可能更希望将文件命名为“Image1Name.png” 而不是“Image1Name”。之后,“png”的第二个参数不是 需要
还有,你的代码-

for image in soup.find_all("img"):
    image = image.get('src')
    alt = image.get('alt')
他有个问题。“image=image.get('src')”将“image”更改为字符串,这意味着“image.get('alt')”将出现错误。我会推荐你-

for img in soup.find_all("img"):
    image = img.get('src')
    alt = img.get('alt')

非常感谢您的建议-虽然我仍然收到错误消息,但我不介意。它会重命名这些图像-再次感谢您!:)
for img in soup.find_all("img"):
    image = img.get('src')
    alt = img.get('alt')