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

这篇具有很好参考价值的文章主要介绍了【老师见打系列】:我只是写了一个自动回复讨论的脚本~。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

🌟好久不见

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

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

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

xhs 粉丝自动回复脚本,小玩意儿,python

xhs 粉丝自动回复脚本,小玩意儿,python

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

⛳️实现过程

🌴老操作了兄弟们~

又双叒叕是Get_cookie.py了兄弟,看过我《小玩意儿》专栏文章的都能看烂了,但别说,还真好用,登录一次,一劳永逸,就靠它了~,话不多说,直接❗️ ❗️ ❗️ 上号💬
xhs 粉丝自动回复脚本,小玩意儿,python
上码❗️ ❗️ ❗️
(记得在三十秒内登录哦~)

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模块【安装和配置环境变量教程、提取数据操作、无头模式】(附操作源码)
什么?不会搞?看下图干就完事了兄弟

xhs 粉丝自动回复脚本,小玩意儿,python

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

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()

💖美图

xhs 粉丝自动回复脚本,小玩意儿,python

结束语

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

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

peace~文章来源地址https://www.toymoban.com/news/detail-831793.html

到了这里,关于【老师见打系列】:我只是写了一个自动回复讨论的脚本~的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序实现客服消息自动回复(回复图片消息)

    前提 小程序已经开通了“云开发”功能 在微信开发者工具中打开“云开发”,点“设置”,点击“其它设置”,点击“添加消息推送”(添加消息类型为“image”和“event”两种消息推送设置),点击“确定” 目前微信小程序用户使用客服功能,必须通过固定的按钮进行触发

    2024年02月10日
    浏览(42)
  • 我用爬虫写了一个小程序

    一天我在微信小程序上面发现有很多表情包或者壁纸一类的小程序,我就在想我可不可以做一个类似的小程序呢? 想法 最开始的时候想法比较简单,就是写一个接口然后上传表情包或者壁纸(到处是下载,哈哈哈)。 然后根据分类以及标题进行搜索已达到其效果;但是让我没

    2024年02月07日
    浏览(38)
  • 微信自动回复(python)

    自从微信禁止网页版登陆之后,itchat 库也就都不能用了,新号不能再登录网页版,而且itchat 库在headers里面只放了UserAgent,其他字段都没有放。所以在你登录的瞬间,微信就已经知道你这个账号没有用浏览器登录了! 这篇博客就简单来介绍一个wxauto库来操作微信。 cluic/wxau

    2024年02月16日
    浏览(24)
  • 微信自动回复软件有吗?

           

    2024年02月12日
    浏览(23)
  • 微信自动回复怎么设置呢?

    友友们 你们是否有以下这些烦恼 1、每天要手动点击“添加”按钮多次以通过大量好友? 2、你是否经常需要在多个微信帐号之间来回切换? 3、你的回复速度慢,导致客户流失率高? 4、为了及时回复,你总是需要带着多部手机出门? 5、每天至少要花费半个小时或一个小时来

    2024年02月08日
    浏览(35)
  • 用JavaFX写了一个简易的管理系统

    自学一下Java FX ,用Java代码写一个简易的客户端。 本文项目是Maven项目,使用了Java17,以及mysql。 代码仓库:https://gitee.com/fengsoshuai/java-fx-management-system-demo/tree/dev-with-db/ 代码仓库(前后端分离版本) : https://gitee.com/fengsoshuai/javafx-management-front-back-demo 建议代码可以直接看前后

    2024年01月25日
    浏览(29)
  • vue+elementui写了一个图书管理系统

    用vue+elementui写了一个图书管理系统 转载自公号:java大师 目前是指一个纯前端的展示,后端还在开发中,前端接口是通过json-server模拟的 用到的技术栈 1、vue.js 2、elementui 3、json-server 4、axios 5、vue-router 动态路由 目录结构 1、components文件夹是封装的通用的Mytable和Myform及Nav等,

    2024年02月04日
    浏览(81)
  • 用Python写了一个「拥抱梅西」的小游戏

    大家好,欢迎来到 Crossin的编程教室 !  最近有个小伙儿因为在比赛中冲进场地拥抱梅西而出名了。  这种行为当然不可取,他也为此付出了代价。但要说我没有一丁点羡慕和佩服那是不可能的。 于是,我也尬蹭一下这个热点,用Python写了一个「拥抱梅西」的小游戏。 游戏

    2024年02月09日
    浏览(29)
  • 微信自动回复小程序(有手就行)

    昨天刷B站看见了个微信自动回复小程序视频作者是 不高兴就喝水视频在这 看着感觉挺有意思的我也搞个敷衍我女朋友。 安装python3.4以上版本,并配置环境变量!!! 1.安装依赖包 方法:在cmd中(win+R  输入cmd  回车)输入 pip install pyperclip 回车 pip install xlrd 回车 pip install

    2024年02月09日
    浏览(43)
  • 我写了一个用来刷题的微信小程序

    目录 土著刷题是一个什么工具? 为什么要做土著刷题这样一个产品? 当前版本的规划 版本效果 土著刷题微信小程序,一款免费的刷题小程序,提供多种刷题模式,可以分享题库给小伙伴一起刷,针对特定题库的用户群体。 对于为什么要开发这个刷题小程序,这可以说是一

    2024年02月10日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包