爬虫项目三:爬取选课信息

爬虫项目三:爬取选课信息,第1张

爬虫项目三:爬取whut-jwc选课信息

项目实现:主要获得通识选修、个性选课、英语体育选课的课程信息

核心:
1、实现网页登陆
2、爬取课程信息


一、网页信息登陆

from selenium import webdriver
import os
import time
import json
import csv
import pandas as pd
def Login():
    Name = "*****"
    Password = "*****"
    # 输入账号
    time.sleep(4)
    driver.find_element_by_id("username").send_keys(Name)
    # 输入密码
    driver.find_element_by_id("password").send_keys(Password)
    time.sleep(4)
    # 点击登录按钮
    driver.find_element_by_id("submit_id").click()
    time.sleep(4)
    # 打开谷歌浏览器
driver = webdriver.Chrome()
url = 'http://sso.jwc.whut.edu.cn/Certification/toIndex.do'

driver.get(url)
Login()
time.sleep(5)
driver.get("http://218.197.102.183/Course")
time.sleep(15)
print("sucess login")

二、爬取课程信息并保存

def saveinfotofile(infos,csvpath):
    with open(csvpath,"w") as csvfile:
        writer = csv.writer(csvfile)
        writer.writerow(["课程名称","上课老师","上课时间","上课地点","容量","选上","本轮已选","任务类型","学分","备注","双语"])
        for info in infos:
            writer.writerows(info)
    print("当前课程信息保存成果")
def getCourseInfo(iindex):
    print("whutjwc爬虫开始....")
    ## 获得选课的按钮
    xuanke = driver.find_elements_by_xpath('//*[@id="sidebar"]/div[2]/div[2]/ul/li')
    courseName = xuanke[iindex]
    
    ## 文件保存的路径 courseName.text
    filepath = "./result/" + courseName.text + ".csv"
    print("当前爬取的课程类型:" + courseName.text)
    ## 展开课程大类的信息
    courseName.click()
    time.sleep(5)
    ## 得到该课程下的所有大类课程
    courseButtons = driver.find_elements_by_xpath('//*[@id="navTab"]/div[2]/div[2]/div/div/div[1]/ul/li')
    ## plusplus所有课程信息
    courseinfoplus = []
    ## 进入课程类别
    for button in courseButtons:
        time.sleep(2)
        ## 展开大类课程
        button.click()
        time.sleep(5)
        ## 找到当前大类下的所有课程
        courses = button.find_elements_by_tag_name('li')
        print("开始爬取 " + button.text[:4] + " 下的课程信息...")
        ## plus保存当前大类下的所有课程信息
        courseinfo = []
        for course in courses:
            ## 点击进入课程详情
            course.click()
            time.sleep(5)
            ## 获取当前课程开课情况1-5
            coursetr = course.find_elements_by_xpath('//*[@id="gxkxk_wxkc_tb"]/tbody/tr')
            ## 保存该课程的课程信息
            for coursetd in coursetr:
                coursetd = coursetd.find_elements_by_tag_name("td")
                ## 保存具体的课程信息
                infodet=[]
                for index in range(1,12):
                    infodet.append(coursetd[index].text)
                courseinfo.append(infodet)
                print("当前爬取课程: "+ infodet[0])
        courseinfoplus.append(courseinfo)
    
    ## 保存课程信息
    saveinfotofile(courseinfoplus,filepath)
    
    ## 返回到课程模块板块
    back = driver.find_elements_by_xpath('//*[@id="sidebar_s"]/div/div')
    back[0].click()
    print("课程数据爬取结束.....")

通过课程类型的索引爬取相关的课程信息

## 通识选修课程索引2  个性课索引3  英语专业选课索引7
getCourseInfo(2)

查看爬取得数据

datacourse = pd.read_csv("./result/通识选修课选课.csv",header=0)
datacourse
driver.quit()

三、结果


总结

以上可以爬取学校教务系统的课程信息,将爬取得过程简单总结一下。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/589802.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-13
下一篇 2022-04-13

发表评论

登录后才能评论

评论列表(0条)

保存