""" 在wordpress博客中导出所有媒体的xml文件后, 用这个python程序可以读取xml文件中的图片链接, 把它们下载到本地硬盘. """ import os import requests from xml.dom.minidom import parse def saveimage(pic,uploads_path): """ 从URL保存图片,URL网址是这样的: pic = https://www.lixingqiu.com/wp-content/uploads/2019/02/Python收集金币游戏不会在墙上_改编:李兴球.png uploads_path:是下载文件夹 """ # 以下是求图片名称及准备目录,把文件放到相应的目录 path,filename = os.path.split(pic) # 图片文件夹完整路径 items = path.split("/") # 路径的每个项目,倒数第一为月份,倒数第二为年份 year_fld = uploads_path + os.sep + items[-2] # 年份文件夹不存在,则创建 if not os.path.exists(year_fld):os.mkdir(year_fld) month_fld = year_fld + os.sep + items[-1] if not os.path.exists(month_fld):os.mkdir(month_fld)#月份文件夹不存在则创建 filename = month_fld + os.sep + filename # 最终在磁盘上保存文件的绝对路径 r = requests.get(pic) if r.status_code == 200: open(filename, 'wb').write(r.content) li_list = [] DOMTree = parse('媒体.xml') # 在wordpress中导出的媒体xml item = DOMTree.documentElement titles = item.getElementsByTagName('title') # 标题 src_links = item.getElementsByTagName('link') # 所引用图片的网址 pic_links = item.getElementsByTagName('guid') # 图片网址 for 标题,文章链接,图片链接 in zip(titles[::-1],src_links[::-1],pic_links[::-1]): for title,src_link,pic_link in zip(标题.childNodes,文章链接.childNodes,图片链接.childNodes): t = title.nodeValue s = src_link.nodeValue u = pic_link.nodeValue if isinstance(t,str) and isinstance(u,str) and isinstance(s,str): item = (t,s,u) # 依次是标题、源文章链接、图片链接 li_list.append(item) uploads_path = 'public_html/wp-content/uploads' # 下载图片的文件夹 print('共有',len(li_list),"项数据") for item in li_list: saveimage(item[2],uploads_path)