【老师见打系列】:我只是写了一个自动回复讨论的脚本~
创始人
2024-01-15 12:42:14
0

文章目录

  • 🌟好久不见
  • ⛳️实现过程
    • 🌴老操作了兄弟们~
    • 🐢一步拿捏讨论
      • 💖美图
  • 结束语

专栏
Python零基础入门篇💥
Python网络蜘蛛💥
Python数据分析
Django基础入门宝典💥
小玩意儿💥
Web前端学习
tkinter学习笔记
Excel自动化处理

🌟好久不见

写这篇文章只是想证明一下:本博主还在呼吸😇

📢许久未更,甚是想更呐~
这段时间生活中充斥着各种事情,感觉每天都在忙忙碌碌,偶而停下疲惫的身躯,突然抬头,却不知自己身处何方,忙了这么久,到底在忙些什么呢?找不着方向,于是开始惶恐,便又不知方向的胡乱奔走……,好吧好吧,总结两个字:迷茫,再加两个字:瞎忙……
在这里插入图片描述
其实这几天一直想写博客的,想写有趣又轻松的一篇文章,但又不到写哪些内容比较好,又因还要解决各种事情,于是就搁到了现在……

在这里插入图片描述
💥直到某天,为了完成MOOC(MOOC不会没人不知道吧👀)上的回复讨论任务,我不已为然的点开了MOOC……突然 ⁉️我看到了一个进度条,那个进度条仿佛就像是深渊,脑海中突然闪出一句话,我%@#!,咳咳咳,不是不是,是一句名言:当你凝望深渊,深渊也在凝望着你……😭
(进度条是已经用代……不是,是已经用我辛勤的劳动把它拉起来的)

在这里插入图片描述

在这里插入图片描述

不知到有没有小伙伴经历过要回复几十条讨论的经历,当场看见那进度条我就……,就偷偷写脚本了😁
这个脚本花了我比较长的时间才完成的,因为调试的过程有些许麻烦……,不过最终还是解决了,想看效果如何,请往下看👇

⛳️实现过程

🌴老操作了兄弟们~

又双叒叕是Get_cookie.py了兄弟,看过我《小玩意儿》专栏文章的都能看烂了,但别说,还真好用,登录一次,一劳永逸,就靠它了~,话不多说,直接❗️ ❗️ ❗️ 上号💬
在这里插入图片描述
上码❗️ ❗️ ❗️
(记得在三十秒内登录哦~)

from selenium import webdriver
import time
import jsondriver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.icourse163.org/')
time.sleep(30)dictCookies = driver.get_cookies()
jsonCookies = json.dumps(dictCookies) # 转换成字符串保存
with open('moocCookie.txt', 'w') as f:f.write(jsonCookies)print("cookies保存成功")

🐢一步拿捏讨论

以前回复讨论咱们讲究的是什么⁉️讲究的是灵活运用Ctrl C和Ctrl V,讲究的是快准狠💪
现在回复讨论咱们讲究的是什么⁉️讲究的是能不用手就不用手,讲究的是一个 automation,科技是第一生产力呀兄弟们 🤘
什么?相应模块怎么下载?pip install 模块名 就完事了兄弟~
什么?chromedriver怎么配置?看这篇文章就完事兄弟~
【Python网络蜘蛛 · 9】:selenium模块【安装和配置环境变量教程、提取数据操作、无头模式】(附操作源码)
什么?不会搞?看下图干就完事了兄弟

在这里插入图片描述

话不多说❗️ ❗️ ❗️码来❗️ ❗️ ❗️

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import json
import timeclass MOOC(object):def __init__(self):self.driver = webdriver.Chrome()self.driver.get('https://www.icourse163.org/')def login(self):#获取保存下的cookie值with open('moocCookie.txt', 'r', encoding='utf-8') as f:listCookies = json.loads(f.read())# 往driver里添加cookiefor cookie in listCookies:cookie_dict = {'domain': '.icourse163.org','name': cookie.get('name'),'value': cookie.get('value'),'expires': '','path': '/','httpOnly': False,'HostOnly': False,'Secure': False}self.driver.add_cookie(cookie_dict)self.driver.refresh() # 刷新页面# 进入课程def entering_the_course(self):#等待“个人中心”元素出现WebDriverWait(self.driver, 1000).until(EC.presence_of_element_located((By.XPATH, '//*[@id="j-indexNav-bar"]/div/div/div/div/div[7]/div[3]/div/div/a/span')))self.driver.find_element(By.XPATH, '//*[@id="j-indexNav-bar"]/div/div/div/div/div[7]/div[3]/div/div/a/span').click()# 等待“SPOC课程12”元素出现并点击time.sleep(1)WebDriverWait(self.driver, 1000).until(EC.presence_of_element_located((By.XPATH, '//div[@class="u-selectTab-container"]/div[2]/a')))self.driver.find_element(By.XPATH, '//div[@class="u-selectTab-container"]/div[2]/a').click()#等待课程元素出现,并获取元素,用户选择课程WebDriverWait(self.driver, 1000).until(EC.presence_of_element_located((By.XPATH, '//div[@class="course-card-wrapper"]/div/a/div/img')))course_ele = self.driver.find_elements(By.XPATH, '//div[@class="course-card-wrapper"]/div/a/div/img')course_name = [ele.get_attribute('alt') for ele in course_ele]for index, i in enumerate(course_name):print(index, i)user = int(input('请输入课程序号:'))course_ele[user].click()time.sleep(2)self.driver.switch_to.window(self.driver.window_handles[-1]) # 切换窗口time.sleep(2)#等待课件出现并点击WebDriverWait(self.driver, 1000).until(EC.presence_of_element_located((By.XPATH, '//li[@data-name="课件"]')))self.driver.find_element(By.XPATH, '//li[@data-name="课件"]').click()# 等待章节元素出现并点击WebDriverWait(self.driver, 1000).until(EC.presence_of_element_located((By.XPATH, '//div[@class="m-learnChapterList f-pr"]/div[@class="m-learnChapterNormal f-pr"][1]')))# 点击章节self.driver.find_element(By.XPATH, '//div[@class="m-learnChapterList f-pr"]/div[@class="m-learnChapterNormal f-pr"][1]').click()time.sleep(0.3)# 点击进入视频self.driver.find_elements(By.XPATH, '//div[@class="sourceList"]/div[1]')[0].click()# 获取章节中”选择课程“的元素并点击WebDriverWait(self.driver, 1000).until(EC.presence_of_element_located((By.XPATH, '//div[@class="j-breadcb f-fl"]//div[@class="f-fl j-lesson"]/div')))# 获取所有章节temp_chapters = self.driver.find_elements(By.XPATH, '//div[@class="f-fl j-chapter"]//div[@class="down f-bg j-list"]/div')# 通过循环获取到的章节元素和课程元素,进行讨论for chapter_index in range(len(temp_chapters)): # 循环章节# 获取章节中”选择课程“的元素并点击WebDriverWait(self.driver, 1000).until(EC.presence_of_element_located((By.XPATH, '//div[@class="j-breadcb f-fl"]//div[@class="f-fl j-lesson"]/div')))# 获取章节选项框并点击self.driver.find_element(By.XPATH, '//div[@class="f-fl j-chapter"]/div[@class="u-select"]/div[1]').click()self.driver.find_elements(By.XPATH, '//div[@class="f-fl j-chapter"]//div[@class="down f-bg j-list"]/div')[chapter_index].click()# 等待课程元素出现WebDriverWait(self.driver, 1000).until(EC.presence_of_element_located((By.XPATH, '//div[@class="j-breadcb f-fl"]//div[@class="f-fl j-lesson"]/div')))# 获取章节中所有课程course = self.driver.find_elements(By.XPATH,'//div[@class="j-breadcb f-fl"]//div[@class="f-fl j-lesson"]/div/div[2]/div')course_names = [i.get_attribute('title') for i in course]for c_index in range(len(course)): # 循环课程WebDriverWait(self.driver, 1000).until(EC.presence_of_element_located((By.XPATH, '//div[@class="j-breadcb f-fl"]//div[@class="f-fl j-lesson"]/div')))self.driver.find_element(By.XPATH,'//div[@class="j-breadcb f-fl"]//div[@class="f-fl j-lesson"]/div').click()WebDriverWait(self.driver, 1000).until(EC.presence_of_element_located((By.XPATH, '//div[@class="j-breadcb f-fl"]//div[@class="f-fl j-lesson"]/div/div[2]/div')))# 重新获取课程元素并点击course1 = self.driver.find_elements(By.XPATH, '//div[@class="j-breadcb f-fl"]//div[@class="f-fl j-lesson"]/div/div[2]/div')course1[c_index].click()time.sleep(2)try:try:# 获取讨论元素disc = self.driver.find_element(By.XPATH, '//li[@title="讨论:讨论话题"]/span[2]')if disc.is_enabled(): # 如果讨论元素存在且可以点击disc.click()self.discuss() # 调用讨论函数except:time.sleep(0.5)if course_names[c_index] == '讨论区':self.discuss()except:pass# 讨论def discuss(self):# 等待“回复”元素出现WebDriverWait(self.driver, 100).until(EC.presence_of_element_located((By.XPATH, '//div[@class="optbar f-cb"]/a[1]/span')))time.sleep(0.5)self.driver.execute_script("var q=document.documentElement.scrollTop=10000")time.sleep(0.5)try:content = self.driver.find_element(By.XPATH, '//div[@class="j-list"]/div/div[3]/div/div[2]/p').textexcept:content = self.driver.find_element(By.XPATH, '//div[@class="j-list"]/div/div[1]/div/div[2]').textself.driver.switch_to.frame(0)time.sleep(0.5)# 定位输入框并输入信息self.driver.find_element(By.XPATH, '//body[@contenteditable="true"]').send_keys(content)self.driver.switch_to.window(self.driver.window_handles[-1])    # 进行窗口切换time.sleep(1)# 点击发送回复self.driver.find_element(By.XPATH,'/html/body/div[5]/div[2]/div[4]/div[2]/div/div[1]/div/div/div[3]/div[2]/div[2]/div/div/div[5]/div/div[1]/div[2]/a[1]').click()def run(self):self.login()self.entering_the_course()mooc = MOOC()
mooc.run()

💖美图

在这里插入图片描述

结束语

好了,以上就是今天哔哩吧啦咕噜哇啦叽里呱啦哗哗啦啦写的一篇水……呃不,勉强还看得过去的文章😛,如果喜欢,可以 点赞👍 收藏🌈 关注💖 感谢您的支持🌹
🚈下次再见💨

哦对了💡为啥每次刷网课时最小化网页后,看完一个视频它就自动暂停了❓是不是可以写一个自动刷视频的❓不管了,下次再说吧💨

peace~

相关内容

热门资讯

车辆转让协议书 车辆转让协议书(通用15篇)  在日常生活和工作中,各种协议频频出现,协议协调着人与人,人与事之间的...
办理二手车辆过户委托书 办理二手车辆过户委托书范本  二手车辆买卖或者车辆转让都是需要办理过户手续的,以免后期发生意外情况而...
经典毕业论文致谢词 经典毕业论文致谢词范文5篇  论文致谢应以简短的文字对课题研究与论文撰写过程中间直接给予帮助的人员(...
遵守交通法规倡议书 遵守交通法规倡议书(精选17篇)  在生活中,越来越多人会去使用倡议书,倡议书是日常应用写作中的一种...
增资认购协议书 增资认购协议书  在充满活力,日益开放的今天,用到协议书的地方越来越多,签订协议书能够较为有效的约束...
合同解除协议书 关于合同解除协议书模板锦集6篇  在社会一步步向前发展的今天,协议的使用成为日常生活的常态,签订协议...
安全管理协议书 关于安全管理协议书  在现在社会,协议在生活中的使用越来越广泛,签订协议能够最大程度的保障自己的合法...
追悼会答谢词 追悼会答谢词(精选5篇)  随着感恩文化的传播,越来越多的事务都会使用到答谢词,请注意不同的对象有不...
西餐餐桌礼仪 【推荐】西餐餐桌礼仪西餐餐桌礼仪1  中国自古以来都是礼仪之邦,以“礼”闻名于全世界。早在周代,中国...
教师节祝福问候语短信 关于教师节祝福问候语短信  有一所名字叫幸福的学校,缺少教师一名,经考察你身体棒棒、心态健康、精力旺...
新年祝福短信 关于新年祝福短信(通用40句)  雁过留痕,时过无遗憾;回首昨天,365个心愿;展望明年,365个新...
考试没考好自我反省检讨书 考试没考好自我反省检讨书  自我反省检讨书的格式:  1.标题  在头行正中写明“检讨书”字样即可;...
南航招飞面试 面试须知(一)面试须携带以下资料:1、大1寸彩色照片2张(未进行ps处理);2、身份证、学生证或学校...
土地买卖协议书 土地买卖协议书  在现实社会中,很多地方都会使用到协议,签订协议是提高经济效益的手段。什么样的协议才...
同学捐款简短的感谢信 同学捐款简短的感谢信范文(精选7篇)  在越来越重视感恩意识提升的今天,在很多情况下我们需要用到感谢...
整顿乱停乱放的简报 整顿乱停乱放的简报(精选17篇)  在日复一日的学习、工作或生活中,许多人对一些广为流传的简报都不陌...
劳动节客户问候短信 劳动节客户问候短信  1、五一不觉到,处处风光好,假期真美妙;祝福的短信,个个争第一,不过我早准备,...
贺信标准格式 贺信标准格式  知其然,不知其所以然。知道贺信,却不知道贺信的格式也是一个道理。小编整合了下面内容,...
停发工资证明 停发工资证明范本(通用18篇)  在平凡的学习、工作、生活中,大家对证明都再熟悉不过了吧,证明是以行...
双鱼座男士的性格特点 双鱼座男士的性格特点  双鱼座男士的性格特点  你了解双鱼座的男生吗?你知道双鱼男有哪些独特的性格特...