我设置的是名字+图片,然后将收集表导出为excel,得到这样的结果:
在excel中创建宏:
Sub 超链接取消文字()
Dim HL As Hyperlink
For Each HL In ActiveSheet.Hyperlinks
HL.Range.Offset(0, 1).Value = HL.Address
Next
End Sub
import urllib
import xlrd
import requests
import socket
import time
sleep_download_time = 1
try:
a = xlrd.open_workbook('青年大学习收集表(收集结果).xlsx', 'r') # 打开.xlsx文件
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36'
}
sht = a.sheets()[0] # 打开表格中第一个sheet
row1 = sht.row_values(0)
# 设置要下载的图片的范围,对应于 Excel 中的行数
start = 1
end = 27
for i in range(start, end):
url = sht.cell(i, 1).value # 依次读取每行第三列的数据,也就是 URL
time.sleep(sleep_download_time)
f = requests.get(url,headers=headers)
ii = str(i) # 按照下载顺序(行号)构造文件名
url2 = 'png' # 根据链接地址获取文件后缀,后缀有.jpg 和 .gif 两种
dir = ii + "." + url2 # 构造完整文件名称
with open(dir, "wb") as code:
code.write(f.content) # 保存文件
print(url) # 打印当前的 URL
jindu = (i - start) / (end - start) * 100 # 计算下载进度
print("下载进度:", jindu, "%") # 显示下载进度
f.close()
except UnicodeDecodeError as e:
print('-----UnicodeDecodeError url:', url)
except urllib.error.URLError as e:
print("-----urlError url:", url)
except socket.timeout as e:
print("-----socket timout:", url)
引用自Python + Excel 实现图片批量下载