PPT链接:https://pan.baidu.com/s/1WqaR_29avEgq46iTSLKfmw?pwd=5r81
提取码:5r81
源码下载链接:ppt.rar - 蓝奏云
采集的参数
page_count = 1 # 每个栏目开始业务content="text/html; charset=gb2312"
base_url = "https://sc.chinaz.com/" # 采集的网址 https://sc.chinaz.com/tag_ppt/zhongguofeng.html
save_path = "D:\\Sprider\\ChinaZ\\"
sprider_count = 110 # 采集数量
haved_sprider_count = 0 # 已经采集的数量
word_content_list = []
folder_name = ""
first_column_name = "ppt"
sprider_start_count=800 # 从第几个序号开始 直接改数量即可 会做除法操作正 正在采集第32页的第16个资源 debug
max_pager=20 #每页的数量
采集主体代码
下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下...,大家下载后可以看到。
小清新雏菊ppt背景图片
水粉手绘小清新花卉ppt背景图片
绿色小清新婚礼ppt背景图片
小清新简约树叶ppt背景图片
小清新个人简历ppt模板免费下载
水彩风小清新夏日森系ppt模板
文艺小清新毕业纪念册相册ppt模板
小清新文艺营销活动ppt模板下载
小清新风格五月你好ppt模板
小清新文艺范总结汇报ppt模板
小清新教育总结ppt模板
小清新蓝绿植物文艺风ppt模板
小清新轻食招商计划书ppt模板
时尚小清新文艺风ppt模板
小清新文艺风春日通用ppt模板
小清新文艺风通用ppt模板
花卉小清新文艺风ppt模板
小清新文艺风ppt模板
时尚小清新文艺风ppt模板
文艺风小清新旅行日记ppt模板
文艺风小清新旅行相册ppt模板
文艺风小清新旅行日记ppt模板
简约小清新文艺风PPT模板
春分节气小清新ppt模板
唯美小清新春天主题ppt模板
关于春天主题ppt模板
小学网络安全主题教育PPT模板
三年级家长会PPT模板
小清新毕业答辩清爽PPT模板
人力资源员工培训PPT模板
女生小清新自我介绍PPT模板
人力资源部月度述职报告PPT模板
企业文化建设PPT模板
财务助理述职PPT模板
小清新工作总结PPT模板
工作总结月报PPT模板
绿色环保主题PPT模板
小清新职业生涯策划书PPT模板
小清新财务总结报告PPT模板
简历自我介绍PPT模板
公司策划书PPT模板
护士长年终工作总结PPT模板
小清新情人节PPT模板
青春飞扬纪念册PPT模板
转正述职报告PPT范文
员工年终总结PPT模板
答辩免费PPT模板
文艺风小清新旅行相册PPT模板
手绘风圣诞节ppt背景
圣诞节的ppt
简约小清新工作汇报PPT模板
3到5年职业规划PPT模板
小清新紫色简约ppt
关于青春的ppt
绿色ppt模板下载
蓝色小清新演讲ppt模板
动态相册ppt模板
生日祝福ppt模板
开题答辩ppt
读书交流会ppt
介绍自己的ppt
欢送会ppt
个人介绍ppt模板
小清新ppt背景图片
小清新ppt模板
创意ppt模板
介绍家乡的ppt模板
免费ppt模板大全
简约复古小清新工作汇报PPT模板
小清新职业调查报告PPT模板
简洁复古小清新PPT模板
简约文艺小清新工作汇报PPT模板
蓝色日系简约小清新PPT模板
小清新研究生学术课题汇报PPT模板
小清新行政月度工作总结PPT模板
小清新老师教学设计课件PPT模板
人力资源工作总结小清新PPT模板
年中极简小清新工作汇报PPT模板
小清新绿色工作计划PPT模板
小清新卡通简约教学PPT模板
2020工作计划商务风PPT模板
简约小清新工作汇报PPT模板
小清新教学教师通用PPT模板
文艺风小清新旅行日记PPT模板
6.5环境保护绿色小清新PPT模板
小清新简约文艺ins风总结计划PPT模板
工作总结述职小清新商务风PPT模板
小清新公开课教育教学计划PPT模板
绿色小清新夏日风工作报告PPT模板
小清新绿植绘画教学通用PPT模板
小清新文艺风读书分享PPT模板
唯美日系文艺小清新通用PPT模板
小清新治愈系读者文摘PPT模板
小清新开学季读书分享PPT模板
复古欧式小清新人事工作总结PPT模板
小清新养生美容会所活动宣传PPT模板
小清新教学课件总结通用PPT模板
中小学生安全主题教育类通用PPT模板
小清新旅游行业营销宣传PPT模板
小清新抽象教育培训商务总结PPT模板
小清新教师远程在线教育课件PPT模板
小清新艺术抽象教学课件PPT模板
小清新休闲时光餐饮PPT模板
小清新ins风圣诞快乐PPT模板
小清新年终述职报告PPT模板
小清新简约金融理财PPT模板
小清新冬季新品发布会PPT模板
小清新商务营销计划PPT模板
小清新卡通插画风户外旅游PPT模板
文艺小清新旅游专题PPT模板
小清新绿植感恩节总结PPT模板
小清新美容美妆通用PPT模板
小清新雏菊ppt背景图片
水粉手绘小清新花卉ppt背景图片
绿色小清新婚礼ppt背景图片
小清新简约树叶ppt背景图片
import os
from time import sleep
import requests
from bs4 import BeautifulSoup
from docx import Document
from docx.shared import Inches
from framework.access.sprider.SpriderAccess import SpriderAccess
from framework.base.BaseFrame import BaseFrame
from framework.pulgin.Tools import Tools
from sprider.business.DownLoad import DownLoad
from sprider.model.SpriderEntity import SpriderEntity
from sprider.business.SpriderTools import SpriderTools
from sprider.business.UserAgent import UserAgent
class ChinaZPPT:
page_count = 1 # 每个栏目开始业务content="text/html; charset=gb2312"
base_url = "https://sc.chinaz.com/" # 采集的网址 https://sc.chinaz.com/tag_ppt/zhongguofeng.html
save_path = "D:\\Sprider\\ChinaZ\\"
sprider_count = 112 # 采集数量
haved_sprider_count = 0 # 已经采集的数量
word_content_list = []
folder_name = ""
first_column_name = "ppt"
sprider_start_count=0 # 从第几个序号开始 直接改数量即可 会做除法操作正 正在采集第108页的第9个资源 debug
max_pager=20 #每页的数量
def __init__(self):
#A5AndroidCoder().sprider("android", "youxi", 895) # daimaku
pass
def sprider(self, second_column_name):
"""
采集Coder代码
:return:
"""
if second_column_name == "zhongguofeng":
self.folder_name = "中国风"
self.first_column_name="tag_ppt"
elif second_column_name == "xiaoqingxin":
self.folder_name = "小清新"
self.first_column_name = "tag_ppt"
elif second_column_name == "kejian":
self.folder_name = "课件"
self.first_column_name = "ppt"
merchant = int(self.sprider_start_count) // int(self.max_pager) + 1
second_folder_name = str(self.sprider_count) + "个" + self.folder_name
self.save_path = self.save_path+ os.sep + "PPT" + os.sep + second_folder_name
BaseFrame().debug("开始采集ChinaZPPT...")
sprider_url = (self.base_url + "/" + self.first_column_name + "/" + second_column_name + ".html")
response = requests.get(sprider_url, timeout=10, headers=UserAgent().get_random_header(self.base_url))
response.encoding = 'UTF-8'
soup = BeautifulSoup(response.text, "html5lib")
#print(soup)
div_list = soup.find('div', attrs={"class": 'ppt-list'})
div_list =div_list.find_all('div', attrs={"class": 'item'})
#print(div_list)
laster_pager_url = soup.find('a', attrs={"class": 'nextpage'})
laster_pager_url = laster_pager_url.previous_sibling
#<a href="zhongguofeng_89.html"><b>89</b></a>
page_end_number = int(laster_pager_url.find('b').string)
#print(page_end_number)
self.page_count = merchant
while self.page_count <= int(page_end_number): # 翻完停止
try:
if self.page_count == 1:
self.sprider_detail(div_list,self.page_count,page_end_number)
else:
if self.haved_sprider_count == self.sprider_count:
BaseFrame().debug("采集到达数量采集停止...")
BaseFrame().debug("开始写文章...")
self.builder_word(self.folder_name, self.save_path, self.word_content_list)
BaseFrame().debug("文件编写完毕,请到对应的磁盘查看word文件和下载文件!")
break
#https://www.a5xiazai.com/android/youxi/qipaiyouxi/list_913_1.html
#https://www.a5xiazai.com/android/youxi/qipaiyouxi/list_913_2.html
#next_url = sprider_url + "/list_{0}_{1}.html".format(str(url_index), self.page_count)
# (self.base_url + "/" + first_column_name + "/" + second_column_name + "/"+three_column_name+"")
next_url =(self.base_url + "/" + self.first_column_name + "/" + second_column_name + "_{0}.html").format(self.page_count)
# (self.base_url + "/" + self.first_column_name + "/" + second_column_name + "")+"/list_{0}_{1}.html".format(str(self.url_index), self.page_count)
response = requests.get(next_url, timeout=10, headers=UserAgent().get_random_header(self.base_url))
response.encoding = 'UTF-8'
soup = BeautifulSoup(response.text, "html5lib")
div_list = soup.find('div', attrs={"class": 'ppt-list'})
div_list = div_list.find_all('div', attrs={"class": 'item'})
self.sprider_detail(div_list, self.page_count,page_end_number)
pass
except Exception as e:
print("sprider()执行过程出现错误" + str(e))
pass
self.page_count = self.page_count + 1 # 页码增加1
def sprider_detail(self, element_list, page_count,max_page):
try:
element_length = len(element_list)
self.sprider_start_index = int(self.sprider_start_count) % int(self.max_pager)
index = self.sprider_start_index
while index < element_length:
a=element_list[index]
if self.haved_sprider_count == self.sprider_count:
BaseFrame().debug("采集到达数量采集停止...")
break
index = index + 1
sprider_info = "正在采集第" + str(page_count) + "页的第" + str(index) + "个资源"
BaseFrame().debug(sprider_info)
title_image_obj = a.find('img', attrs={"class": 'lazy'})
url_A_obj=a.find('a', attrs={"class": 'name'})
next_url = self.base_url+url_A_obj.get("href")
coder_title = title_image_obj.get("alt")
response = requests.get(next_url, timeout=10, headers=UserAgent().get_random_header(self.base_url))
response.encoding = 'UTF-8'
soup = BeautifulSoup(response.text, "html5lib")
#print(next_url)
down_load_file_div = soup.find('div', attrs={"class": 'download-url'})
if down_load_file_div is None:
BaseFrame().debug("需要花钱无法下载因此跳过哦....")
continue
down_load_file_url = down_load_file_div.find('a').get("href")
#print(down_load_file_url)
image_obj = soup.find('div', attrs={"class": "one-img-box"}).find('img')
image_src = "https:"+ image_obj.get("data-original")
#print(image_src)
if (DownLoad(self.save_path).__down_load_file__(down_load_file_url, coder_title, self.folder_name)):
DownLoad(self.save_path).down_cover_image__(image_src, coder_title) # 资源的 封面
sprider_content = [coder_title,
self.save_path + os.sep + "image" + os.sep + coder_title + ".jpg"] # 采集成功的记录
self.word_content_list.append(sprider_content) # 增加到最终的数组
self.haved_sprider_count = self.haved_sprider_count + 1
BaseFrame().debug("已经采集完成第" + str(self.haved_sprider_count) + "个")
if (int(page_count) == int(max_page)):
self.builder_word(self.folder_name, self.save_path, self.word_content_list)
BaseFrame().debug("文件编写完毕,请到对应的磁盘查看word文件和下载文件!")
except Exception as e:
print("sprider_detail:" + str(e))
pass
def builder_word(self, word_title, save_path, list_files):
"""
输出产物是word文件
:param word_title: 文件的标题
:param save_path: 文件的保存路径
:param list_files: 文件集合(单个内容)
:return:
"""
try:
self.copy_file(self.save_path)
print("Create Word"+word_title)
file_count= len(list_files)
self.gen_passandtxt(file_count,word_title)
document = Document()
document.add_heading(word_title, level=2)
document.add_paragraph("分享"+str(file_count)+"个"+str(word_title)+",总有一款适合您\r\n"
"下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下...,大家下载后可以看到。")
ppt_tieles = ""
for files in list_files:
ppt_tieles = ppt_tieles + str(files[0]) + "\r"
document.add_paragraph(ppt_tieles)
for files in list_files:
try:
document.add_paragraph(files[0])
document.add_picture(files[1], width=Inches(3))
except Exception as e:
pass
document.add_paragraph("最后送大家一首诗:")
paragraph = document.add_paragraph() # 单独控制
paragraph.add_run("山高路远坑深,\r")
paragraph.add_run("大军纵横驰奔,\r")
paragraph.add_run("谁敢横刀立马?\r")
paragraph.add_run("惟有点赞加关注大军。\r")
paragraph.bold = True # 字体加粗
file_full_path=save_path+os.sep+word_title+".docx"
document.save(file_full_path)
except Exception as e:
print("Create Word Fail reason:" + str(e))
def gen_passandtxt(self,file_count,word_title):
print("Create PassWord and Pass.txt")
message=SpriderTools.gen_password()
password = "".join(message)
content=""
content = content + "\n分享"+str(file_count)+"个"+word_title+",总有一款适合您\r\n"
content = content + "\n\r"
content=content+"\n都到这里了您就支持一下呗!谢谢老铁~~"
content=content+"\n\r"
content=content+"\n文件我就不一一列举了,送老铁一首打油诗"
content=content+"\n学习知识费力气,"
content=content+"\n收集整理更不易。"
content=content+"\n知识付费甚欢喜,"
content=content+"\n为咱码农谋福利。"
content=content+"\n\r"
content=content+"\n\r"
content=content+"\n感谢您的支持"
content=content+"\n\r"
content=content+"\n-------------------------------------------华丽分割线-------------------------------------------------------"
content=content+"\n友情提醒解压密码:"+password+""
full_path=self.save_path+os.sep+""+str(file_count)+"sell_pass.txt"
with open(full_path, 'a', encoding='utf-8') as f:
f.write(content)
def copy_file(self,target_path):
print("copy files")
import os
import shutil
src_apk_file_path="薅羊毛专业版.apk"
dst_apk_file_path=target_path+os.sep+"薅羊毛专业版.apk"
shutil.copyfile(src_apk_file_path, dst_apk_file_path) # 移动文件
src_pdf_file_path = "薅羊毛专业版.pdf"
dst_pdf_file_path = target_path + os.sep + "薅羊毛专业版.pdf"
shutil.copyfile(src_pdf_file_path, dst_pdf_file_path) # 移动文件
src_doc_file_path = "readme.docx"
dst_doc_file_path = target_path + os.sep + "readme.docx"
shutil.copyfile(src_doc_file_path, dst_doc_file_path) # 移动文件
pass
if __name__ == "__main__":
ChinaZPPT().sprider("xiaoqingxin") # daimaku