读取wordpress的媒体xml下载图片到本地磁盘

读取wordpress的媒体xml下载图片到本地磁盘

"""
   在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)


 

李兴球

李兴球的博客是Python创意编程原创博客

评论已关闭。