分享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页面模板

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

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

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

城市日历组件模板

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

我家地址:亚丁号

最后送大家一首诗:

山高路远坑深,

大军纵横驰奔,

谁敢横刀立马?

惟有点赞加关注大军。

目录
相关文章
|
6月前
|
数据可视化
分享78个Html杂七杂八模板,总有一款适合您
分享78个Html杂七杂八模板,总有一款适合您
42 3
|
6月前
|
数据管理 Python
分享70个Html杂七杂八模板,总有一款适合您
分享70个Html杂七杂八模板,总有一款适合您
34 0
|
6月前
|
数据管理 数据挖掘 iOS开发
分享67个Html杂七杂八模板,总有一款适合您
分享67个Html杂七杂八模板,总有一款适合您
34 6
|
6月前
|
安全 数据管理 开发者
分享86个Html杂七杂八模板,总有一款适合您
分享86个Html杂七杂八模板,总有一款适合您
38 4
|
6月前
|
移动开发 数据管理 数据安全/隐私保护
分享66个Html杂七杂八模板,总有一款适合您
分享66个Html杂七杂八模板,总有一款适合您
45 1
|
6月前
|
前端开发 数据管理
分享64个Html杂七杂八模板,总有一款适合您
分享64个Html杂七杂八模板,总有一款适合您
27 1
|
6月前
分享63个Html杂七杂八模板,总有一款适合您
分享63个Html杂七杂八模板,总有一款适合您
42 0
分享63个Html杂七杂八模板,总有一款适合您
|
6月前
|
数据管理 定位技术 Python
分享88个Html杂七杂八模板,总有一款适合您
分享88个Html杂七杂八模板,总有一款适合您
48 1
|
6月前
|
安全 Python
分享83个Html杂七杂八模板,总有一款适合您
分享83个Html杂七杂八模板,总有一款适合您
58 1
|
6月前
|
Python
分享82个Html杂七杂八模板,总有一款适合您
分享82个Html杂七杂八模板,总有一款适合您
34 0