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)