分享72个Html杂七杂八模板,总有一款适合您

简介: 分享72个Html杂七杂八模板,总有一款适合您

分享72个Html杂七杂八模板,总有一款适合您


 

72个Html杂七杂八模板下载链接:https://pan.baidu.com/s/1rhQv5htRbPE5zM0JiuFqYg?pwd=8888

提取码:8888

学习知识费力气,收集整理更不易。知识付费甚欢喜,为咱码农谋福利。

import os
import shutil
import time
from time import sleep
from docx import Document
from docx.shared import Inches
from selenium.webdriver.edge.options import Options
from framework.base.BaseFrame import BaseFrame
from sprider.business.SeleniumTools import SeleniumTools
from sprider.business.SpiderTools import SpiderTools
from selenium import webdriver
from selenium.webdriver.common.by import By
from sprider.model.SpriderEntity import SpriderEntity
from sprider.access.SpriderAccess import SpriderAccess
title_name = "Html模板"
class MoBanWangHtmlSelenium:
    #region 经常修改的变量
    base_url = "http://www.mobanwang.com"  # html模板王
    save_path = "D:\\Spider\\Html"
    spider_count =72  #采集数量
    spider_start_count =1812 #正在采集第55页的第12个资源,共204页资源
    #endregion
    word_content_list = []
    folder_name = "Html模板"
    page_end_number = 50 # 最后一页
    max_pager = 30  # 每页的数量 影响再次采集的起始位置
    haved_spider_count = 0  # 已经采集的数量
    page_count = 1  # 每个栏目开始业务content="text/html; charset=gb2312"
    filter_down_file = []
    word_image_count = 1  # word插入图片数量 同时也是明细采集图片和描述的数量
    sprider_detail_index = 0  # 明细方法采集的数量 累加
    tempFileList = []
    def spider(self, title_name):
        """
        :return:
        """
        if title_name == "Html册模板":
            self.first_column_name="mb"
            self.second_column_name = "album"
        elif title_name == "Html模板":
            self.first_column_name = "mb"
            self.second_column_name = "other"
        BaseFrame().debug("开始采集" + self.folder_name + "...")
        self.merchant = int(self.spider_start_count) // int(self.max_pager) + 1  # 起始页码用于效率采集
        BaseFrame().right("本次采集参数:日志路径=" + str(BaseFrame().LOG_PATH) + "")
        BaseFrame().right("本次采集参数:spider_count=" + str(self.spider_count) + "")
        BaseFrame().right("本次采集参数:title_name=" + title_name + "")
        self.sprider_category = title_name  # 一级目录self.folder_name
        #多少个 某某某
        second_folder_name = str(self.spider_count) + "个" + title_name  # 二级目录
        self.sprider_type = second_folder_name #多少个某某某东东
        #浏览器的下载路径
        #self.down_path = self.save_path + os.sep +"\\" + self.folder_name + "\\" + second_folder_name + "\\Temp\\"
        self.down_path = self.save_path + os.sep + self.folder_name + os.sep + second_folder_name + "\\Temp"
        BaseFrame().right("本次采集参数:down_path=" +  self.down_path + "")
        # 原始路径+一级目录+二级目录
        # First/PPT/88个动态PPT模板
        self.file_path = self.save_path + os.sep + self.folder_name + os.sep + second_folder_name
        BaseFrame().right("本次采集参数:file_path=" + self.file_path + "")
        # First/PPT/88个动态PPT模板/动态PPT模板
        self.save_path = self.save_path + os.sep + self.folder_name + os.sep + second_folder_name + os.sep + title_name
        BaseFrame().right("本次采集参数:save_path=" + self.save_path + "")
        #根据栏目构建URL
        spider_url = self.base_url + "/{0}/{1}".format(self.first_column_name,self.second_column_name)
        if os.path.exists(self.down_path) is True:
            shutil.rmtree(self.down_path)
        if os.path.exists(self.down_path) is False:
            os.makedirs(self.down_path)
        if os.path.exists(self.save_path) is True:
            shutil.rmtree(self.save_path)
        if os.path.exists(self.save_path) is False:
            os.makedirs(self.save_path)
        edge_options = Options()
        diy_prefs = {'profile.default_content_settings.popups': 0,
                     'download.default_directory': '{0}'.format(self.down_path)}
        # 添加路径到selenium配置中
        edge_options.add_experimental_option('prefs', diy_prefs)
        edge_options.add_argument('--headless')  # 隐藏浏览器
        # 实例化chrome浏览器时,关联忽略证书错误
        browser = webdriver.Edge(options=edge_options)
        # 窗口最大化
        #  browser.maximize_window()
        browser.set_window_size(1300, 1000)  # 分辨率 1280*800
        browser.get(spider_url)
        # content = driver.page_source
        #masonry-brick
        element_list = browser.find_elements(By.CLASS_NAME, "mb-mblist")
        if SeleniumTools.judeg_element_isexist(browser, "LINK_TEXT", "下一页") == 1:
            element = browser.find_element(By.LINK_TEXT, "下一页")
            next_url = element.get_attribute("href")
            page_url = next_url.split("_")[1] # 47.html
            self.page_end_number=int(page_url.split(".")[0])
            #class ="page-link" href="http://www.mobanwang.com/mb/ind/List_47.html" > 下一页 < / a >
        real_page_number=int(self.page_end_number)+1
        self.page_count = self.merchant
        while True:
            try:
                if self.page_count == real_page_number-int(self.page_end_number):
                    self.spider_detail(browser, element_list, self.page_count, self.page_end_number, self.down_path)
                    pass
                else:
                    if self.haved_spider_count == self.spider_count:
                        BaseFrame().debug("spider采集到达数量采集停止...")
                        BaseFrame().debug("开始写文章...")
                        self.builder_word(self.folder_name, self.word_content_list)
                        BaseFrame().debug("文件编写完毕,请到对应的磁盘查看word文件和下载文件!")
                        break
                    next_url = self.base_url + "/{0}/{1}/List_{2}.html".format(self.first_column_name,
                                                                       self.second_column_name,
                                                                       real_page_number -self.page_count)
                    BaseFrame().debug("开始采集:" + next_url)
                    browser.get(next_url)
                    element_list = browser.find_elements(By.CLASS_NAME, "mb-mblist")
                    self.spider_detail(browser, element_list, self.page_count, self.page_end_number, self.down_path)
                if int(self.page_end_number)==self.page_count:
                    break
                self.page_count = self.page_count + 1  # 页码增加1
            except Exception as e:
                print("spider()执行过程出现错误:" + str(e))
                break
    def spider_detail(self, driver, element_list, page_count, max_page, down_path):
        """
        采集明细页面
        :param driver:
        :param element_list:
        :param page_count:
        :param max_page:
        :param down_path:
        :return:
        """
        index = 0
        element_array = []
        element_length = len(element_list)
        print("当前页" + str(page_count) + "每页共" + str(element_length))
        for element in element_list:
            element_a = element.find_element(By.TAG_NAME, "a")
            # print(html_content)
            next_url = element_a.get_attribute("href")
            coder_title = element_a.get_attribute("title")
            e = coder_title + "$" + next_url
            element_array.append(e)
            pass
        #再次开始采集不从第一页开始采集 提升效率
        if int(self.page_count) == int(self.merchant):
            self.sprider_start_index = int(self.spider_start_count) % int(self.max_pager)
            index = self.sprider_start_index
        while index < element_length:
            if os.path.exists(down_path) is False:
                os.makedirs(down_path)
            if self.haved_spider_count == self.spider_count:
                BaseFrame().debug("spider_detail采集到达数量采集停止...")
                break
            # element = element_list[index]
            element = element_array[index]
            time.sleep(1)
            index = index + 1
            spider_info = "正在采集第" + str(page_count) + "页的第" + str(index) + "个资源,共" + str(max_page) + "页资源"
            BaseFrame().debug(spider_info)
            next_url = element.split("$")[1]
            coder_title = element.split("$")[0]
            try:
                codeEntity = SpriderEntity()  # 下载过的资源不再下载
                codeEntity.sprider_base_url = self.base_url
                codeEntity.create_datetime = SpiderTools.get_current_datetime()
                codeEntity.sprider_url = next_url
                codeEntity.sprider_pic_title = coder_title
                codeEntity.sprider_pic_index = str(index)
                codeEntity.sprider_pager_index = page_count
                codeEntity.sprider_type = self.sprider_type
                if SpriderAccess().query_sprider_entity_by_urlandindex(coder_title) is None:
                    SpriderAccess().save_sprider(codeEntity)
                else:
                    BaseFrame().debug(coder_title + next_url + "数据采集过因此跳过")
                    continue
                driver.get(next_url)  # 请求明细页面1
                BaseFrame().debug("采集明细内容网址:" + next_url)
                #mb-color-666
                span_element = driver.find_element(By.XPATH, "/html/body/div[3]/div/div[2]/div/div[2]/div[1]/span[2]")
                if "psd" in span_element.text : #html│psd│flash
                    BaseFrame().right("PSD格式的文件因此去跳过")
                    continue
                if SeleniumTools.judeg_element_isexist(driver, "LINK_TEXT", "免费下载") == 1:
                    print("准备点击【免费下载】按钮...")
                    div_element = driver.find_element(By.LINK_TEXT, "免费下载")  # 下载源码.click()
                    div_element.click()
                else:
                    if SeleniumTools.judeg_element_isexist(driver, "LINK_TEXT", "点击下载") == 1:
                        print("准备【点击下载】按钮...")
                        a_element = driver.find_element(By.LINK_TEXT, "点击下载")  # 下载源码.click()
                        a_element.click()
                    else:
                        BaseFrame().debug(coder_title + "下载按钮不存在,因此跳过哦....")
                        continue
                result, message = SpiderTools.judge_file_exist(True, 600, 1, down_path, "zip|rar|pptx|ppt", self.tempFileList)  # 判断源码
                if result is True:
                    title_content = ""
                    title_image = ""
                    spider_content = [coder_title, title_image, title_content]  # 图片和描述采集成功的记录
                    self.word_content_list.append(spider_content)  # 增加到最终的数组
                    self.haved_spider_count = self.haved_spider_count + 1
                    BaseFrame().right(
                        "已经采集完成第" + str(self.haved_spider_count) + "个,共需要采集" + str(self.spider_count) + "个")
                    time.sleep(1)
                    driver.back()
                    #移动文件
                    coder_title = str(coder_title).replace("::", "").replace("/", "").strip()  # 去掉windows不识别的字符
                    files = os.listdir(down_path)
                    file_name = files[0]  # 获取默认值
                    srcFile = down_path + os.sep + file_name
                    file_ext = os.path.splitext(srcFile)[-1]
                    dstFile = down_path + os.sep + coder_title + file_ext
                    os.rename(srcFile, dstFile)
                    srcFile = dstFile
                    dstFile = self.save_path + os.sep + coder_title + file_ext
                    shutil.move(srcFile, dstFile)  # 移动文件
                    self.sprider_detail_index = self.sprider_detail_index + 1
                else:
                    print("result=" + str(result) + "" + message)
                    files = os.listdir(down_path)  # 读取目录下所有文件
                    coder_title = str(coder_title).replace("/", "")  # 去掉windows不识别的字符
                    try:
                        if str(message) == "0个文件认定是False":
                            BaseFrame().error(coder_title + "文件不存在...")
                            pass
                        else:
                            BaseFrame().error("检测下载文件出错可能原因是等待时间不够已经超时,再等待60秒...")
                            time.sleep(60)
                            shutil.rmtree(down_path)  # 如果没下载完是无法删除的
                            # 清空数组
                            self.filter_down_file.clear()
                    except Exception as e:
                        BaseFrame().error(e)
                        # 使用数组append记录文件名字 移动的时候过滤
                        shutil.rmtree(down_path)  # 如果没下载完是无法删除的
                    pass
            except Exception as e:
                BaseFrame().error("sprider_detail()执行过程出现错误:" + str(e))
                #shutil.rmtree(down_path)  # 如果没下载完是无法删除的
        if int(page_count) == int(max_page):
            self.builder_word(self.folder_name, self.word_content_list)
            BaseFrame().debug("文件编写完毕,请到对应的磁盘查看word文件和下载文件!")
            return

image.gif

信息订阅登记响应式网页模板

教育机构项目展示响应式网站模板

产品定价单网页模板

医生查询预约表单响应式网页模板

不动产交易查询服务响应式网站模板

客户调查表单响应式网页模板

经典商务注册表单响应式网页模板

紫色流星404页面模板

艺术色彩登录框网页模板

天空计时器组件模板

成功之路教育响应式网站模板

时尚商务登记表单响应式网页模板

社交登录表单响应式网页模板

骑行社交名片响应式模板

皇家餐馆响应式网页模板

滑板上线倒计时反馈响应式网页模板

image.gif 编辑

摄影师拍照预约表单响应式网页模板

详细资料登记表单响应式网页模板

资料登录框响应式网页模板

冰淇淋甜品店响应式网页模板

青草注册登录框响应式网页模板

礼品登记表单响应式网页模板

商务订阅表单响应式网页模板

守护者婚礼展示响应式网站模板

预约表单信息响应式网页模板

企业联系名片响应式网页模板

归路倒计时响应式网页模板

梦想家园规划展示响应式网页模板

卡布奇诺咖啡产品响应式网页模板

休闲日历控件模板

网站托管定价表网页模板

路径错误404页面模板

快速简洁登录框响应式模板

快门摄影公司响应式网页模板

绿叶粒子登录框响应式网页模板

城市日历组件模板

深海倒计时响应式网页模板

太阳镜展示商城响应式网页模板

社交资料信息组件响应式网页模板

暗景注册登录表单响应式网页模板

在线教育培训服务响应式网页模板

信息验证登记表单响应式网页模板

网站工程即将上线响应式网页模板

网站底部说明响应式网页模板

在线计算器组件响应式网页模板

美容产品日志响应式网页模板

蓝色登录窗口响应式网页模板

视讯登录框响应式网页模板

蓝绿渐变学生登录表单网页模板

订单信息提交响应式网页模板

酒店预订表单响应式网页模板

比萨饼餐馆介绍响应式网页模板

流行动态订阅框响应式网页模板

数据统计分析后台响应式网页模板

婚姻信息登录框响应式网页模板

假面商务登录表单响应式网页模板

知识学习中心响应式网页模板

绿色健康订阅表单响应式网页模板

摄影俱乐部介绍响应式网页模板

高级餐厅展示倒计时网页模板

时尚设计师登录框网页模板

超市登录表单响应式网页模板

大学服务动态展示响应式网页模板

追寻的路倒计时响应式网页模板

交互登录框响应式网页模板

学习动态登录框响应式网页模板

推荐计划表单响应式网页模板

辛辣美味披萨餐厅响应式网页模板

设计师专业展示响应式网页模板

流浪宠物登记表单响应式网页模板

儿童兴趣服务中心响应式网页模板

蓝雨登录框响应式网页模板

你有时间常去我家看看我在这里谢谢你啦...

我家地址:亚丁号

最后送大家一首诗:

山高路远坑深,

大军纵横驰奔,

谁敢横刀立马?

惟有点赞加关注大军。

目录
打赏
0
0
2
1
189
分享
相关文章
商标小程序这些隐藏技能,你发现了吗?
低调发育,偷偷成长,只有十级老粉才知道的隐藏技,今天出攻略给大家,不藏了,我摊牌了!
554 0
阿里云CDN:全球加速网络的实践创新与价值解析
在数字化浪潮下,用户体验成为企业竞争力的核心。阿里云CDN凭借技术创新与全球化布局,提供高效稳定的加速解决方案。其三层优化体系(智能调度、缓存策略、安全防护)确保低延迟和高命中率,覆盖2800+全球节点,支持电商、教育、游戏等行业,帮助企业节省带宽成本,提升加载速度和安全性。未来,阿里云CDN将继续引领内容分发的行业标准。
310 7
|
7月前
一个好看的小时钟html+js+css源码
一个好看的小时钟html+js+css源码
185 24
html5 + Three.js 3D风雪封印在棱镜中的梅花鹿动效源码
html5 + Three.js 3D风雪封印在棱镜中的梅花鹿动效源码。画面中心是悬浮于空的梅花鹿,其四周由白色线段组成了一个6边形将中心的梅花鹿包裹其中。四周漂浮的白雪随着多边形的转动而同步旋转。建议使用支持HTML5与css3效果较好的火狐(Firefox)或谷歌(Chrome)等浏览器预览本源码。
175 2
|
11月前
|
LeetCode经典算法题:预测赢家+香槟塔java解法
LeetCode经典算法题:预测赢家+香槟塔java解法
143 1
有哪些常见的 PHP 文件管理系统?
elFinder:开源Web文件管理器,支持文件的基本操作及拖放管理,具备多种文件预览、权限管理功能,适用于网站后台文件管理和共享主机环境。 FileRun:多语言、易用的文件管理工具,提供强大的搜索和版本控制功能,支持外部存储集成,适用于企业内部文件共享与协作。 KCFinder:轻量级PHP文件管理器,易于集成,支持文件上传下载限制,与富文本编辑器兼容,适用于博客系统和内容编辑场景。 AjaXplorer:基于Ajax技术的文件管理系统,提供流畅体验和插件扩展,支持文件分类和共享,适用于团队协作和灵活文件分享场景。
ly~
510 1
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问