返回顶部
首页 > 资讯 > 后端开发 > Python >Python实现自动回复讨论功能的脚本分享
  • 864
分享到

Python实现自动回复讨论功能的脚本分享

2024-04-02 19:04:59 864人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录好久不见实现过程一步拿捏讨论美图好久不见 写这篇文章只是想证明一下:本博主还在呼吸 许久未更,甚是想更呐~ 这段时间生活中充斥着各种事情,感觉每天都在忙忙碌碌,偶而停下疲惫的身躯

好久不见

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

许久未更,甚是想更呐~

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

其实这几天一直想写博客的,想写有趣又轻松的一篇文章,但又不到写哪些内容比较好,又因还要解决各种事情,于是就搁到了现在……

直到某天,为了完成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, '//*[@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()

美图

以上就是Python实现自动回复讨论功能的脚本分享的详细内容,更多关于Python自动回复讨论的资料请关注编程网其它相关文章!

--结束END--

本文标题: Python实现自动回复讨论功能的脚本分享

本文链接: https://lsjlt.com/news/120811.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python实现自动回复讨论功能的脚本分享
    目录好久不见实现过程一步拿捏讨论美图好久不见 写这篇文章只是想证明一下:本博主还在呼吸 许久未更,甚是想更呐~ 这段时间生活中充斥着各种事情,感觉每天都在忙忙碌碌,偶而停下疲惫的身躯...
    99+
    2024-04-02
  • shell脚本实现ssh自动登录功能分享
    文件名:ssh_auto_login #!/usr/bin/expect### ssh模拟登陆器## @author zhiyuan <hzyhouzhiyuan艾特gmail.com>##i...
    99+
    2022-06-04
    脚本 自动登录 功能
  • Python实现自动玩连连看的脚本分享
    目录序言实现步骤全部代码序言 最近女朋友在玩连连看,玩了一个星期了还没通关,真的是菜。 我实在是看不过去了,直接用python写了个脚本代码,一分钟一把游戏。 快是快,就是联网玩容易...
    99+
    2024-04-02
  • Python实现考试自动答题的脚本分享
    目录导语一、准备环境二、代码展示 三、效果展示导语 对于新手而言,掌握好方向盘的打法非常重要,关系到我们能否顺利通过驾考,拿到驾照。而开车时方向盘又是最重要的,握好方向盘等...
    99+
    2023-03-19
    Python实现考试自动答题 Python考试自动答题 Python自动答题
  • Shell脚本实现自动修改IP、主机名等功能分享
    作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名、ip信息、网关等配置。修改成特定的主机名在维护...
    99+
    2022-06-04
    等功能 脚本 主机名
  • Python实现校园网自动登录的脚本分享
    目录背景思路技术点碎碎念代码背景 我在的学校校园网登录是web式的,即随便打开一个网页就会自动跳转到登录页面,然后输入用户名密码,点登录,便可以上网了。 但这种登录方式有个缺点:登录...
    99+
    2024-04-02
  • 【老师见打系列】:我只是写了一个自动回复讨论的脚本~
    文章目录 🌟好久不见⛳️实现过程🌴老操作了兄弟们~🐢一步拿捏讨论💖美图 结束语 专栏Python零基础入门篇&#x...
    99+
    2023-09-01
    python
  • 实例分享8个Python自动化脚本
    本篇文章给大家带来了关于Python的相关知识,其中主要整理了自动化脚本的相关问题,包括了自动化阅读网页新闻、自动化数据探索、自动发送多封邮件等等内容,下面一起来看一下,希望对大家有帮助。【相关推荐:Python3视频教程 】每天你都可能会...
    99+
    2022-08-08
    python
  • 4个的Python自动化脚本分享
    目录1、将 PDF 转换为音频文件 2、从列表中播放随机音乐 3、不再有书签了 4、清理下载文件夹 前言: 大家平时有没有注意到你每天可能会执行许多的重复的任务,例如阅读 pdf、播...
    99+
    2024-04-02
  • 利用Python实现自动工作汇报的脚本分享
    目录一、写在开头二、需要什么三、模型训练四、数据处理和传输五、金融模型六、代码七、MIME八、SMTP九、放在一起一、写在开头 哈喽兄弟们 之前经常编写Python脚本来进行数据处理...
    99+
    2024-04-02
  • 基于Python实现微信自动回复功能
    大家好,之前我们使用 WechatPCAPI 做了获取微信好友信息以及查看撤回消息,本文我们再使用 WechatPCAPI 来实现微信自动回复的功能。 实现自动回复的功能,我们需要用...
    99+
    2024-04-02
  • Python实现简单自动评论自动点赞自动关注脚本
    目录前言开发环境原理:代码实现1. 请求伪装2. 获取搜索内容的方法3. 获取作品评论4. 自动评论5. 点赞操作6. 关注操作7. 获取创作者信息8. 获取创作者视频9. 调用函数...
    99+
    2024-04-02
  • Shell脚本制作的终端会话回放功能脚本分享
    不久前在书上看到两个很有趣的命令——script和srciptreplay,它可以把终端会话记录到一个文件中,即是说我们可以通过终端会话来来制作命令行技巧视频教程,也可以与他人分享会话文件,而且生成的文件还...
    99+
    2022-06-04
    脚本 终端 功能
  • 分享十个超级实用事半功倍的Python自动化脚本
    在日常的工作学习当中,我们总会遇到各式各样的问题,其中不少的问题都是一遍又一遍简单重复的操作,不妨直接用Python脚本来自动化处理,今天小编就给大家分享十个Python高级脚本,帮助我们减少无谓的时间浪费,提高工作学习中的效率。给照片添加...
    99+
    2023-05-14
    Python 自动化脚本
  • Shell实现的Oracle启动脚本分享
    Usage: sh oracled [start|stop|restart] SIDs 其中SIDs是数据库名,多个名称之间用逗号分隔。缺省的操作是 restart ,也可以指定需要进行的操作( start...
    99+
    2022-06-04
    脚本 Shell Oracle
  • 基于Python如何实现微信自动回复功能
    这篇文章主要介绍“基于Python如何实现微信自动回复功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“基于Python如何实现微信自动回复功能”文章能帮助大家解决问题。实现自动回复的功能,我们需要...
    99+
    2023-07-02
  • 5个Python杀手级的自动化脚本分享
    目录1.文件传输脚本2.系统监控脚本3.Web 抓取脚本(最常用)4.电子邮件自动化脚本5. 密码管理器脚本Python 是一种功能强大的语言,广泛用于自动执行各种任务。无论您是开发...
    99+
    2023-01-29
    Python自动化脚本 Python自动化 Python 脚本
  • Python实现自动回复QQ消息功能的示例代码
    目录1、需要安装的模块2、整体逻辑3、代码实现最近在看测试相关的内容,发现自动化测试很好玩,就决定做一个自动回复QQ消息的脚本(我很菜) 1、需要安装的模块 这个自动化脚本需要用到3...
    99+
    2024-04-02
  • 基于chatgpt的微信自动回复功能实现
    微信自动回复 基于聊天api的 import pyautogui import pyperclip import keyboard import requests import ti...
    99+
    2023-02-24
    chatgpt微信自动回复 聊天api微信自动回复
  • shell脚本怎么实现ssh自动登录功能
    本篇内容介绍了“shell脚本怎么实现ssh自动登录功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!文件名:ssh_auto_login代...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作