《用python爬取公众号推送图片并保存为PPT解决方案.docx》由会员分享,可在线阅读,更多相关《用python爬取公众号推送图片并保存为PPT解决方案.docx(3页珍藏版)》请在三一办公上搜索。
1、# -*-coding=utf-8-*-importrequestsfrombs4importBeautifuISoupimportdatetimeimportosfromdocximportDocument#导入docx包fromdocx.sharedimportCmasword_Cm#设置页面边距frompptimportPresentationfrompptx.utilimportCmasppt_Cmimportpptxfrompptx.utilimportInches# 图片格式列表PicJormatJist=# 创建文件夹defcreatejile():#获取系统时间curr_tim
2、e=datetime.datetime.now()#将时间格式化为字符生成时间戳到时候给文件夹命名用#path=datetime.datetime.strftime(curr_time,%Y%m%d%H%M,)path=datetime.datetime.strftime(curr_time,%Y%m%d,)#检查是否存在这个文件夹ifos.path.exists(path):pass# PrintC属于这个时间点的文件夹已经创建好!”)else:# 不存在则创建os.mkdir(path)# Print(“创建成功!正在保存图片”)#获取当前工作目录并加上之前的时间生成文件夹路径dirnam
3、e=os.getcwd()+,+path+Wreturndirname#获取微信公众号图片defget_picture(url):headers=,user-agent:,Mozilla5.0(iPhone;CPUiPhoneOSll_OlikeMacOSX)AppleWebKit/604.1.38(KHTML1likeGecko)Version/11.0Mobile15A372Safari604.1,)#向刚才输入的公众号链接里面发送请求req=requests.get(url=url,headers=headers).content.decode()#获取该网页中所有的图片标签#如果这个标
4、签内的data-src等于空的时#否则获取data-src里面的内容获取#用BeautifuISoup解析网页soup=BeautifISoup(req,lxm)res=soup.select(img,)a=0#遍历所有的图片标签foriinres:ifi.get(,data-src)=None:候直接跳过passelse:图片链接#Print(f,链接:i.get(data-src)类型为:i.get(data-type)picjormatjist.append(i.get(data-type)#尝试去保存图片如果保存图片错误则抛出异常try:#拼接路径+a.jpga是等于数字每添加一个a自
5、增一相当于是给图片命名并且以二进制的形式写入withopen(createjile()+f,a,i.get(data-type),wb)asf:#向这个图片发送请求并将图片的二进制写入f.write(requests.get(url=i.get(data-src),headers=headers).content)f.close()#关闭写入a=a+1#2自增一exceptExceptionase:#抛出异常增加程序强壮性Print(”该链接为空自动跳过!”)Print(此次一共成功保存图片a张”)#生成word文档defGenerate_word(file_name):Doc-Documen
6、t()#设置页面边距sec=Doc.sections0#sections对应文档中的节”sec.left-margi=word_Cm(0)#以下依次设置左、右、上、下页面边距sec.right_margin=word_Cm(0)sec.top_margin=word_Cm(0)sec.bottom_margin=word_Cm(0)#插入图片foriinrange(l150):path=r.O,.format(createjile(),i,pic_format_listi)Doc.add_picture(path,width=word_Cm(21.88),height二WoreLCm(29)#
7、Cm是厘米i+=1Doc.save(r.0.doc,.format(file-name)#生成PPtdefGenerate_ppt(file_name):PPT=PresentationOWjS=CoUnt_files(Create_file()#获取图片文件夹中图片数目#print(wjs)foriinrange(l1wjs):path=r,.,.format(createjile(),i,picjormatjisti)#print(path)# PPT.slideJayouts0第一个母版中的第1个样式# 添加新的一页,这个页面的版式就是括号里的ppt_slide=PPT.slides.a
8、dd-slide(PPT.slideJayouts6)#这是样式是空白# left,top分别为图片左边距、顶部边距ppt_slide.shapes.add_picture(path,Ieft=PPjCm(O),top=ppt_Cm(0),height=ppt-Cm(19)i+=1PPT.save(r,.0.pptx,.format(file-name)defcountjiles(folder):#获取图片文件夹中图片数目函数file_count=len(namefornameinos.listdir(folder)ifos.path.isfile(os.path.join(folder,name)returnfile_countif_name_=_main_:#文档名称#获取微信公众号图片#生成Word#生成PPturl=input。请输入微信公众号url:1,)file_name=input(请设置文档名称:)get_picture(url)print(Saving)#Generate_word(file_name)Generate_ppt(file_name)Print:(PiJformat_list)Print(”文档创建成功!”)