我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【老师见打系列】:我只是写了一个自动回复讨论的脚本~

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【老师见打系列】:我只是写了一个自动回复讨论的脚本~

文章目录

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

🌟好久不见

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

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

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

在这里插入图片描述

在这里插入图片描述

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

⛳️实现过程

🌴老操作了兄弟们~

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

from selenium import webdriverimport timeimport 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 webdriverfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.common.by import Byimport jsonimport 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里添加cookie        for 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').text        except:            content = self.driver.find_element(By.XPATH, '//div[@class="j-list"]/div/div[1]/div/div[2]').text        self.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~

来源地址:https://blog.csdn.net/Oh_Python/article/details/127465767

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【老师见打系列】:我只是写了一个自动回复讨论的脚本~

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录