栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

寻找国双高学校发布中期自评报告

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

寻找国双高学校发布中期自评报告

背景

2019年1月24日,国务院印发《国家职业教育改革实施方案》,提出将启动实施中国特色高水平高等职业学校和专业建设计划,由教育部和财政部共同研究制定并联合实施,“双高计划”正式启动。
首批双高计划建设名单197所,作为高职学校的标杆,客户方想要参考学习一下自评报告,因此需要去双高校官网寻找自评报告,恰逢时间5月底,正是发布中期自评报告的时间点,因此需要去下载学校的中期自评报告

目标

去197个网站上寻找中期自评报告,供学习使用

实现步骤

1、根据名单,找到发布报告的网站
本想尝试用脚本寻找,发现百度收录的网站不一定准确,因此手动记录此记录放在Excel中。
2、根据Excel中记录的学校及网址,用selenium访问检索HTML
本想直接下载文件,但发现每个网站的结构都不一样,为了快速完成目标,直接将公告页保存成HTML,检索【中期自评报告】,若存在则记录域名

# 构造读取Excel函数,第B列放名称,C列放网站
def read(row):
    book = xlrd.open_workbook(r"F:workspace公司项目双高招投标收集197所国双高名单.xls")
    sheet = book.sheet_by_index(0)
    # print(sheet.cell_value(1, 1))
    return [sheet.cell_value(row, 1), sheet.cell_value(row, 2)]
# 寻找中期自评报告
def sg():
    log = Log()
    for i in range(94, 198):
        cname = read(i)
        name = cname[0]
        url = str(cname[1])
        log.info("正在查找:"+str(name))
        # 此四步用于隐藏浏览器,注意配置webdriver
        chrome_options = Options()
        chrome_options.add_argument('--headless')
        chrome_options.add_argument('--disable-gpu')
        driver = webdriver.Chrome(chrome_options=chrome_options, executable_path='../chromedriver.exe')
        # driver = webdriver.Chrome(executable_path='../chromedriver.exe')
        try:
            driver.get(url)
            time.sleep(5)
            a = driver.execute_script("return document.documentElement.outerHTML")
        # print(a)
            if "中期自评报告" in str(a):
                # print(str(name)+":"+str(url))
                log.info(str(name)+"单位存在报告:《"+str(url)+"》")
                
            else:
                log.warning(str(name) + "单位不存在")
                
        except:
            driver.quit()
            log.warning(str(name)+"单位打开失败,域名是"+str(url))
        driver.close()
        driver.quit()
        
# 日志模块,记录运行日志
class Log:
    def __init__(self, log_path=os.path.join(root_dir, "logs")):

        # 文件的命名
        self.log_path = log_path
        self.logName = os.path.join(self.log_path, '%s.log' % time.strftime('%Y_%m_%d'))

        self.logger = logging.getLogger()
        self.logger.setLevel(logging.DEBUG)

        # 日志输出格式
        self.formatter = logging.Formatter('[%(asctime)s] - %(filename)s] - %(levelname)s: %(message)s')

    def __console(self, level, message):
        # 创建一个FileHandler,用于写到本地
        fh = logging.FileHandler(self.logName, 'a', encoding='utf-8')  # 这个是python3的
        fh.setLevel(logging.DEBUG)
        fh.setFormatter(self.formatter)
        self.logger.addHandler(fh)

        # 创建一个StreamHandler,用于输出到控制台
        ch = logging.StreamHandler()
        ch.setLevel(logging.DEBUG)
        ch.setFormatter(self.formatter)
        self.logger.addHandler(ch)

        if level == 'info':
            self.logger.info(message)
        elif level == 'debug':
            self.logger.debug(message)
        elif level == 'warning':
            self.logger.warning(message)
        elif level == 'error':
            self.logger.error(message)

        # 这两行代码是为了避免日志输出重复问题
        self.logger.removeHandler(ch)
        self.logger.removeHandler(fh)

        # 关闭打开的文件
        fh.close()

    def debug(self, message):
        self.__console('debug', message)

    def info(self, message):
        self.__console('info', message)

    def warning(self, message):
        self.__console('warning', message)

    def error(self, message):
        self.__console('error', message)


# 运行函数
if __name == "__main__":
	sg()

3、根据记录的loginfo信息,手动去网站寻找文件下载

注意点:如果你是Mac环境,日志模块会报错,因为程序会创建log日志,不一定会有权限。
如果你的webdriver与浏览器不匹配 ,启动会失败

如果你还要其他疑问,欢迎加微信探讨

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/929439.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号