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

文章目录

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

🌟好久不见

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

📢许久未更,甚是想更呐~
这段时间生活中充斥着各种事情,感觉每天都在忙忙碌碌,偶而停下疲惫的身躯,突然抬头,却不知自己身处何方,忙了这么久,到底在忙些什么呢?找不着方向,于是开始惶恐,便又不知方向的胡乱奔走……,好吧好吧,总结两个字:迷茫,再加两个字:瞎忙……

【老师见打系列】:我只是写了一个自动回复讨论的脚本~
其实这几天一直想写博客的,想写有趣又轻松的一篇文章,但又不到写哪些内容比较好,又因还要解决各种事情,于是就搁到了现在……

【老师见打系列】:我只是写了一个自动回复讨论的脚本~
💥直到某天,为了完成MOOC(MOOC不会没人不知道吧👀)上的回复讨论任务,我不已为然的点开了MOOC……突然 ⁉️我看到了一个进度条,那个进度条仿佛就像是深渊,脑海中突然闪出一句话,我%@#!,咳咳咳,不是不是,是一句名言:当你凝望深渊,深渊也在凝望着你……😭
(进度条是已经用代……不是,是已经用我辛勤的劳动把它拉起来的)

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

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

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

; ⛳️实现过程

🌴老操作了兄弟们~

又双叒叕是 Get_cookie.py了兄弟,看过我《小玩意儿》专栏文章的都能看烂了,但别说,还真好用,登录一次,一劳永逸,就靠它了~,话不多说,直接❗️ ❗️ ❗️ 上号💬

【老师见打系列】:我只是写了一个自动回复讨论的脚本~
上码❗️ ❗️ ❗️
(记得在三十秒内登录哦~)
from selenium import webdriver
import time
import json

driver = 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 time

class 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, '
        )
        self.driver.find_element(By.XPATH, '

        # 等待"SPOC课程12"元素出现并点击
        time.sleep(1)
        WebDriverWait(self.driver, 1000).until(
            EC.presence_of_element_located((By.XPATH, '
        )
        self.driver.find_element(By.XPATH, '

        #等待课程元素出现,并获取元素,用户选择课程
        WebDriverWait(self.driver, 1000).until(
            EC.presence_of_element_located((By.XPATH, '
        )
        course_ele = self.driver.find_elements(By.XPATH, '
        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, '
        )
        # 点击章节
        self.driver.find_element(By.XPATH, '
        time.sleep(0.3)
        # 点击进入视频
        self.driver.find_elements(By.XPATH, '

        # 获取章节中"选择课程"的元素并点击
        WebDriverWait(self.driver, 1000).until(
            EC.presence_of_element_located(
                (By.XPATH, '
        )
        # 获取所有章节
        temp_chapters = self.driver.find_elements(By.XPATH, '

        # 通过循环获取到的章节元素和课程元素,进行讨论
        for chapter_index in range(len(temp_chapters)): # 循环章节
            # 获取章节中"选择课程"的元素并点击
            WebDriverWait(self.driver, 1000).until(
                EC.presence_of_element_located(
                    (By.XPATH, '
            )
            # 获取章节选项框并点击
            self.driver.find_element(By.XPATH, '
            self.driver.find_elements(By.XPATH, '

            # 等待课程元素出现
            WebDriverWait(self.driver, 1000).until(
                EC.presence_of_element_located(
                    (By.XPATH, '
            )
            # 获取章节中所有课程
            course = self.driver.find_elements(By.XPATH,'
            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, '
                )
                self.driver.find_element(By.XPATH,'

                WebDriverWait(self.driver, 1000).until(
                    EC.presence_of_element_located(
                        (By.XPATH, '
                )
                # 重新获取课程元素并点击
                course1 = self.driver.find_elements(By.XPATH, '
                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, '
        )
        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, '
        except:
            content = self.driver.find_element(By.XPATH, '

        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~

Original: https://blog.csdn.net/Oh_Python/article/details/127465767
Author: 街 三 仔
Title: 【老师见打系列】:我只是写了一个自动回复讨论的脚本~

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/726329/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • python开发过哪些游戏_【python学习】详细解释Python快速开发贪吃蛇游戏,只需200行代码…

    学习Python开发小游戏,轻松入门 前言 最近在学习Python3,看了一下语法和基本数据类型,有多年PHP经验的我感觉难度不是很大。Python作为高级语言,一些数据类型和函数…

    Python 2023年9月25日
    047
  • 【技术流吃瓜】python可视化大屏舆情分析“张天爱“事件微博评论

    一、事件背景 二、微热点分析 二、自开发Python舆情分析 2.1 Python爬虫 2.2 可视化大屏 2.2.1 大标题 2.2.2 词云图 2.2.3 条形图 2.2.4 …

    Python 2023年11月1日
    052
  • 企业spark案例 —— 出租车轨迹分析

    有帮助的小伙伴可以帮我点个免费的好评和赞耶谢谢大家! import org.apache.spark.sql.SparkSession object Step1 { def mai…

    Python 2023年11月7日
    040
  • R语言进行模型交叉验证比较

    我们建立模型后,需要对模型变量调整比较,得出最优模型,交叉验证为目前评价模型质量的一个比较流行的方法。我们今天使用BOOT包的cv.glm函数来交叉验证,得出最优模型,并和其他指标…

    Python 2023年9月16日
    052
  • 条件测试

    条件测试 下面这些代码需要在python自带的IDLE shall中运行 检查是否相等(检查时区分大小写) car = ‘Audi’car==’audi’car = ‘Audi’c…

    Python 2023年6月3日
    079
  • python——利用pandas分析学生期末成绩

    1.从excel文件中读出本班同学的成绩册,并处理好缺失值。2.根据’加分’和’减分’两列统计出平时成绩。3.将实验报告成绩从ABC…

    Python 2023年8月7日
    065
  • Python Pandas用法整理

    Pandas简介 Pandas是一-种基于NumPy的开源的数据分析工具包,提供了高性能、简单易用的数据结构和数据分析函数。Pandas提供 了方便的类表格和类SQL的操作,同时提…

    Python 2023年8月19日
    047
  • 干货 | 利用pandas处理Excel数据

    新建一个excel表格(table1.csv)用于案例讲解: 导库 import pandas as pd import numpy as np 读取数据 df = pd.read…

    Python 2023年8月20日
    062
  • 基于ZK实现高可用服务

    HighAvailabilityServices接口主要提供了获取不同组件的LeaderRetrievalService服务和LeaderElectionService服务。Lea…

    Python 2023年10月9日
    045
  • 8000字概括精髓,pandas必知必会50例

    本篇我们继续前面 pandas系列教程的探讨,今天小编会介绍 pandas库当中一些非常基础的方法与函数,希望大家看了之后会有所收获,另外呢,大家要是希望小编…

    Python 2023年8月27日
    072
  • [思维模式-13]:《复盘》-1- “知”篇 – 认识复盘

    目录 前言 一、什么是复盘 二、复盘的三个关键词 三、复盘,而非总结 四、复盘的优势与局限 五、复盘与行动学习、培训、绩效改进的区别与联系 六、关于复盘的几个常见误解 误解1:可否…

    Python 2023年10月27日
    034
  • Python员工离职数据分析

    Python员工离职数据分析 import pandas as pd import seaborn as sns import matplotlib.pyplot as plt i…

    Python 2023年8月19日
    063
  • Matplotlib系列目录

    Python科学计算和数据分析库系列目录 Matplotlib系列目录 Matplotlib系列(一):快速绘图入门 Matplotlib系列(二):设置、样式及颜色风格 Matp…

    Python 2023年9月5日
    058
  • pytest篇9-失败重试机制

    01 — 引言 上一篇总结了pytest的skip和skipif的使用,skip是无条件的跳过用例,skip是当条件为真时,会跳过测试用例,可以灵活运用起来。 当部分用例因为一些偶…

    Python 2023年9月11日
    041
  • CyberCat赛博猫,进阶版AXIE

    欢迎各位新老朋友,我们细说P2E(Play to Earn),为广大用户提供一个深入了解链游的平台。不定期的跟大家分享一些精品项目和最新链游方向,也欢迎大家关注我们。我们第十六期分…

    Python 2023年9月20日
    042
  • 测试开发面试题总结

    li = ["{‘a’:11,’b’:2}", "[11,22,33,44]"] new_list = [] for i in li: re…

    Python 2023年8月5日
    035
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球