查看本学期老师所教的课程

import re
import requests
import pymysql

base_url = "http://202.192.240.54/kkcx/"

# 连接mysql
db = pymysql.connect(host="localhost",user="root",passwd="root",db="course_teacher",charset="utf8")
cursor = db.cursor()
sql = "drop table if exists course_to_teacher"
cursor.execute(sql)
sql = "create table course_to_teacher(id int auto_increment,course_name varchar(80),teacher varchar(80),primary key(id))"
cursor.execute(sql)

# 获取各个学院的 url
def get_academy_urls(url="http://202.192.240.54/kkcx/yxkk.aspx"):
    r = requests.get(url)
    p = re.compile(r‘yxkk.aspx\?id=\d{2}‘)
    acadmy_course_urls = p.findall(r.text)
    return acadmy_course_urls

# 获取学院的的所有课程url
def get_all_course_url(url):
    r = requests.get(url)
    p = re.compile(r‘yxkk_view.*id=\d{7}‘)
    urls = p.findall(r.text)
    get_teacher_course(urls)

# 获取课程名和老师
def get_teacher_course(urls):
    for url in urls:
        r = requests.get(base_url + url)
        # 获取课程名
        p = re.compile(r"课程名:(.*)学")
        course_info = p.findall(r.text)
        course_name = get_course_name(course_info)
        # 获取对应的教师
        p = re.compile(r"<span.*cnameLabel.*>(.*)</span>")
        teachers = p.findall(r.text)
        for teacher in teachers:
            if(teacher and teacher != "未指定"):
                # print(course_name,"=",teacher)
                sql = "insert into course_to_teacher(course_name,teacher) values(‘%s‘,‘%s‘)" % (course_name,teacher)
                cursor.execute(sql)
                db.commit()

# 获取课程名
def get_course_name(course_info):
    for info in course_info:
        course_name = info.strip("\u3000")
    return course_name

if __name__ == "__main__":
    for acadmy_course_url in get_academy_urls():
        get_all_course_url(base_url + acadmy_course_url)

    # TODO 优化,优化,优化
    # 新建表去重
    # CREATE TABLE course_to_teacher_copy LIKE course_to_teacher
    # INSERT INTO course_to_teacher_copy(course_name,teacher) SELECT DISTINCT(course_name),teacher FROM course_to_teacher
时间: 2024-12-27 23:56:02

查看本学期老师所教的课程的相关文章

50个查询系列-第七个查询:查询学过“叶平”老师所教的所有课的同学的学号、姓名

效果是: 我们查出来叶平的教的课的id是002和016.我们选出的学生同时有这两门课. 如下: ------------------------------------------------------------------------------------------------------------------------------------------------- 具体的做法: 第一步:查找叶平的id select  tblteacher.TeaId from tblteac

韩老师Linux磁盘管理课程笔记

韩立刚老师视频教学+QQ答疑 韩老师腾讯课堂直播课程http://91xueit.ke.qq.com.课后集中答疑. 课程介绍http://www.91xueit.com韩老师QQ:458717185 QQ教学群:82819921 韩老师15年IT职业化培训知识沉淀和IT企业技术支持经验积累,凝聚成体系完整的IT课程,从0起点到IT专家,你只需要1年的时间,韩老师做你的技术后盾,从此你不用在到处搜索学习资料,参加学费高昂的培训班,成为韩老师的正式学生,就是韩老师的徒弟,解答学习和工作中遇到的问题

程序的效率 ———— 宝玉老师手把手教学生

宝玉老师在南通大学软件工程教学改革QQ群里,手把手教学生. ===================== 举个例子,你的程序可以写成这样: (1) function add() { int a1 = 1; int a2 = 2; int a3 = 3; return a1 + a2 + a3; } 也可以写成这样: (2) function add(int a1, int a2, int a3) { return a1 + a2 + a3; } 也可以写成这样: (3) function add(

清华大学邓俊辉老师的数据结构在线课程

前几天想重新把数据结构学一遍,于是乎,翻出以前上数据结构的课件,orz...知识遗忘的速度太快了,想找个视频跟着看.令我意想不到的是,我居然能搜索到清华大学邓俊辉老师的数据结构课程,当时把我激动的啊,我要感谢互联网让教育变得那么open.能让我这个二本学校的学生听清华老师的课程,这真的是一件很幸福很幸福的事情. 一流的学校的教育方式就是那么高大上,用OJ提交作业,系统对代码进行黑盒测试...这个课程一直持续到来年1.5日才结束.这么好的资源一定要和大家分享:http://www.xuetangx

毛[文强]老师的一堂前端课程

对于像我们这样的后端程序员来说,前端似乎总是难于把握.可能并非因为难度,而是因为在前端的世界里,缺乏条理性和逻辑性.知识是分散的,工具是分散的,库是分散的.尤其像我这样的,没啥毅力的人,或者说想象力比较惨淡的人,前端进步不大. 好了,吐槽结束. -------------   毛老师 说话   -------------       几年前,还是痴迷java的那会儿,我也曾纠结于前端框架的选择.试图找出一套一劳永逸的前端框架继承到项目架构中.搜遍全网得出以下结论: 各大前端框架可以按照“封装度”

通达OA 小飞鱼老师OA工作流设计课程教学网络公开课之HTML基础

通达OA网络教学公开课开始了,有需要的小伙伴们抓住机会奥.8月29号晚8点不见不散.本次课程的主要内容是通达OA工作流设计课程中需要用到的Html部分学习. 版权声明:本文为博主原创文章,未经博主允许不得转载.

PHP老师没教过你的那些知识点

另类的写法有惊喜 我们在阅读某些源代码的时候会发现有一种另类的写法,比如 //异常写法 if(false == $result) //正常写法 if($result == false) 其实这是一种很聪明的写法,它可以很大程度上杜绝手误造成的严重bug. 假如我们在正常方法中把 == 误写成 = ,那么if($result = false) 就会恒定返回true,导致在实际运行中产生未知的Bug,如果使用异常的写法出现手误变成时if(false = $false) ,编辑器会抛出一个error,

idou老师带教你学Istio 03: istio故障注入功能的介绍和使用

故障注入测试 故障注入测试顾名思义就是当被测试应用部分组件或功能出现潜在故障时其本身的容错机制是否正常工作,以达到规避故障保证正常组件或功能的使用.Istio提供了HTTP故障注入功能,在http请求转发的过程中,用户可以设定一个或多个故障.故障注入的修改作用于Virtual Service,共有两种不同的故障模式abort和delay. 类型 所属 描述 abort HTTPFaultInjection.Abort 中断Http请求并且返回既定的错误状态码给请求方 delay HTTPFaul

数据库SQL面试题2(关于学生、课程、成绩、教师四张表)

下面和大家分享一个比较经典的场景,数据库的面试题目,主要的表是学生.课程.成绩.教师四张表,本示例的特点是有模拟数据,加深理解和印象,答案主要基于Oracle来实现的 1.四张表分别为: Student(S#,Sname,Sage,Ssex) 学生表 S#:学号:Sname:学生姓名:Sage:学生年龄:Ssex:学生性别 Course(C#,Cname,T#) 课程表 C#:课程编号:Cname:课程名字:T#:教师编号 SC(S#,C#,score) 成绩表 S#:学号:C#,课程编号:sc