python根据excel里的图片下载链接批量下载图片,图片格式错误的指明错误单元格在具体位置
时间: 2024-05-04 08:19:19 浏览: 54
可以使用Python中的`requests`和`openpyxl`库来实现批量下载图片和读取Excel文件。具体步骤如下:
1. 使用`openpyxl`库读取Excel文件中的图片链接和对应的单元格位置,存储为一个字典。
2. 遍历字典中的每个图片链接,使用`requests`库下载图片。
3. 下载完成后,检查图片格式是否正确,如果不正确,则记录错误单元格位置。
4. 最终输出错误单元格位置。
下面是示例代码:
```python
import requests
from openpyxl import load_workbook
from PIL import Image
from io import BytesIO
# 读取Excel文件中的图片链接和对应的单元格位置
def read_excel(file_path):
wb = load_workbook(file_path)
ws = wb.active
links = {}
for row in ws.iter_rows(min_row=2, values_only=True):
link = row[1]
cell = row[0]
links[link] = cell
return links
# 下载图片并检查格式是否正确
def download_image(link):
response = requests.get(link)
img = Image.open(BytesIO(response.content))
if img.format not in ['JPEG', 'PNG', 'GIF']:
return False
return True
# 批量下载图片并记录错误单元格位置
def batch_download(links):
errors = []
for link in links:
if download_image(link) == False:
errors.append(links[link])
else:
response = requests.get(link)
with open(f"{links[link]}.jpg", "wb") as f:
f.write(response.content)
return errors
# 测试代码
if __name__ == '__main__':
links = read_excel('file.xlsx')
errors = batch_download(links)
if len(errors) > 0:
print(f"以下单元格图片格式错误:{errors}")
else:
print("所有图片下载完成!")
```
需要注意的是:
1. Excel文件中的图片链接需要放在第二列,对应单元格位置需要放在第一列。
2. 下载图片时,需要使用`Pillow`库打开图片并检查格式是否正确,如果图片格式不正确,则记录错误单元格位置。
3. 为了方便区分不同单元格位置的图片文件,可以将单元格位置作为文件名保存图片,例如`A1.jpg`表示单元格A1的图片。
阅读全文