运用selenium+bs4实现课程表的爬取

锵锵✨

建议前往本人bolg【点这里】查看哦,观感更加,嘿嘿👻

Blog: xst73.github.io

为了解决每天忘记课程而需要不停进入教务系统查课表的烦恼(不是

刚刚学了一点点爬虫的x73决定写一个爬虫项目来爬取课表信息用来导入本地课表软件!

准备工作

用到的模块

模块 版本
selenium >= 4.0
webdriver-manager 3.8.4
bs4 4.11.1
re all

用到的工具

PyCharm、 Edge

tips:Edge 为 selenium所需的浏览器,需保证最新版本,可以是其他浏览器,但要保证代码中调整为相应的驱动
{:.warning}

开始!!

provider – 获取课表页面源代码

step1. 获取登录状态cookie

课表界面都没看到,怎么获取嘛

我们想要见到我们亲爱的课表同学,就先要保证我们处于登录状态,这样我们才能顺利的见到课表~

所以我们要先通过selenium模拟登录行为,获取到登录状态下的cookie。

def get_cookie(url):
    option = webdriver.EdgeOptions()
    option.add_argument('headless')
    option.add_argument('disable-gpu')
    service = EdgeService(executable_path=EdgeChromiumDriverManager().install())
    driver = webdriver.Edge(service=service, options=option)

    driver.get(url)
    driver.find_element(By.ID, 'username').send_keys('******') # your username/id
    driver.find_element(By.ID, 'passWord').send_keys('******') # your password
    driver.find_element(By.ID, 'loginButton').click()
    return driver.get_cookies()
小插曲

这里浅浅的讲一下 selenium{:.info} 的使用方法~

step0. 设置隐藏浏览器,即使用无头模式进行,可以酌情删掉哦(不是

option = webdriver.EdgeOptions()
option.add_argument('headless')
option.add_argument('disable-gpu')

step1. 使用 install() 获取管理器使用的位置, 并将其传递到服务类中

service = EdgeService(executable_path=EdgeChromiumDriverManager().install())

step2. 使用 Service 实例并初始化驱动程序

driver = webdriver.Edge(service=service, options=option)

tips: 详情参考 Install browser drivers - Selenium

step2. 启动 Edge-Driver

接下来就可以启动 新的 edgeDriver, 步骤和之前一样哦~

def html_provider():
    print('[INFO] Get URL and Cookie')
    url = "http://jwglxt.hncj.edu.cn:8061/admin/indexMain/M140202"  # 课表页面url
    url_login = "http://jwglxt.hncj.edu.cn:8061/admin/login"  # 登录界面url
    cookies = get_cookie(url_login)

    print('[INFO] Start Edge Driver')
    option = webdriver.EdgeOptions()
    option.add_argument('headless')
    option.add_argument('disable-gpu')
    service = EdgeService(executable_path=EdgeChromiumDriverManager().install())
    driver = webdriver.Edge(service=service, options=option)

step3. 添加Cookie

添加前需要先使用driver.get(url) 访问一次目的url, 让selenium识别到需要添加cookie的作用域,不然会报错哦!

    print('[INFO] Getting HTML from URL')
    driver.get(url)  
    driver.delete_all_cookies()  # 这个也是必要的,不然cookie会添加失败,但不会报错!
    for i in cookies
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值