欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Markdown文件获取网络的图片并存储在本地和修改url

时间:2023-05-24

本脚本旨获取指定文件中在网络中所有的图片,并存储在本地,并且修改文件中的url指向本地图片。

#!/usr/bin/env python# -*- coding: utf-8 -*-# @Author : codekiller# @Time : 2022/2/13 20:42# @Email : jcl1345414527@163.com# @File : MdImage.py# @Description: 用来进行md文件中图片的获取,保存在本地,并修改md文件。只需要修改ua和文件的位置就行了import reimport requestsimport timeua = 自己去浏览器寻找headers = {"User-Agent": ua}# 文件的位置file_dir = r'F:md笔记javaJVM\'file_n = 'test'file_suffix = '.md'fileName = file_dir+file_n+file_suffix# 存储图片的位置img_tsrc = 'assets/'img_src = file_dir + img_tsrcwith open(file=fileName, mode="r", encoding='utf-8') as f1: # 用来计数 s_count = 0 fail_count = 0 sus_count = 0 lines = f1.readlines() for i in range(0, len(lines)): url = re.findall(', lines[i], re.S) if len(url)!=0: url = url[0] #处理本地图片 if len(re.findall(img_tsrc+'.*', url, re.S))!=0: print('第',i,'行:为本地图片') s_count+=1 continue #获取时间作为图片文件名 timestamp = int(time.time()) image_name = str(time.strftime('%Y%m%d%H%M%S', time.localtime(timestamp)))+str(i)+".png" #请求图片 img = requests.get(url,headers=headers) #判断是否获取 if img.status_code != 200: print('第',i,'行:','!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!',img.status_code) fail_count+=1 continue #存储 target = open(img_src+image_name,'ab') target.write(img.content) target.close() lines[i] = lines[i].replace(url,img_tsrc+image_name) print('第',i,'行:',url+'成功转为'+img_tsrc+image_name) sus_count+=1 print('---本地图片为:',s_count,'个---') print('---获取失败为:',fail_count,'个---') print('---转化成功为:',sus_count,'个---')#将处理过的cNames写入新的文件中fileName2 = file_dir+file_n+'-修改'+file_suffixwith open(file = fileName2,mode='w',encoding='utf-8') as f2: f2.writelines(lines)

控制台输出:

报感叹号的表示转化失败,后面是获取图片的状态码;为本地图片的说明不需要转化。

转化成功的效果:

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。