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与浏览器不匹配 ,启动会失败
如果你还要其他疑问,欢迎加微信探讨



