python下载公众号保存html包含图片

python下载公众号保存html包含图片

python下载公众号保存html包含图片

学习完python,发现写代码超级方便,功能强大,写出来的代码超级精简,用原来java写的代码修改成python代码一篇搞定 ε=(・д・`*)ハァ…

import os
import time
import datetime
from urllib.request import Request, urlopen
from urllib import request
import re
class DownWx():
    dirurl = 'Uploads/'  #保存目录
    def __init__(self):  # 构造函数
        super().__init__()
    # 保存图片
    def put_file_img(self,dir,image_url):
        #判断图片的保存类型 截取后4位地址 jpeg =png =jpg =gif
        exts = image_url[-4:]
        file_leixing = "." + exts.replace("=","")
        filename = re.sub(u"([^\u4e00-\u9fa5\u0030-\u0039\u0041-\u005a\u0061-\u007a])", "", image_url)#提取中文和数字
        try:
            request.urlretrieve(image_url, dir +"/"+ filename +file_leixing)
        except:
            print(image_url,"下载失败")
        return "img/" + filename +file_leixing
    #开始下载文章
    def get_file_article(self,url,qcode=False):
        req = Request(url)
        response = urlopen(req)
        htmls = response.read().decode('utf-8', 'ignore')
        # 标题
        res = re.findall('[\s\S]*?', htmls)
        title = res[0][7:-8].lstrip()
        print(title)
        #创建和标题对应的目录
        title = re.sub(u"([^\u4e00-\u9fa5\u0030-\u0039\u0041-\u005a\u0061-\u007a])", "", title) #提取中文
        print(title)
        dir = self.dirurl + "("+str(datetime.datetime.now().strftime('%Y%m%d')) +")" + title #文章保存路径
        isExists = os.path.exists(dir + "/img")
        if not isExists:
            print('目录不存在')
            os.makedirs(dir + "/img")
        else:
            print('目录存在')
        #内容主体
        res = re.findall('
[\s\S]*?
'
, htmls) content = res[0] #内容主体 # 所有图片 res = re.findall('',content) # 去除重复图片地址 res = set(res) # 储存原地址和下载后地址 old = [] new = [] for i in res: # 图片保存成功 替换地址 old.append(i) new.append(self.put_file_img(dir + "/img",i)) old.append('data-src') new.append('src') for i in range(len(old)): htmls = htmls.replace(old[i], new[i]) # 全部 content = content.replace(old[i], new[i]) #只有主体的部分 fp = open(dir + "/" + title+".html",'w',encoding='utf-8') # 打开一个文本文件 fp.write(htmls) # 写入数据全部 #fp.write(content) # 写入数据 只有主体的部分 fp.close() # 关闭文件 if __name__ == '__main__': w = DownWx() url = 'https://mp.weixin.qq.com/s/itDfmseKPFRagprtOOwWcA' w.get_file_article(url, True)

你可能感兴趣的:(python)