logo_2024
萌の领域

【技术教程】萌の领域每日自动打卡+点赞

技术教程 乐天派 - 18
最近在自学python,于是就……不知道龙姐姐会不会给我审核通过 最后审核由 龙姐 UID:1

前言

最近忽然就对python感兴趣了,然后看着网上的教程自学了几天,想着要实际运用到生活中。

想必如今大家的萌币都早已不缺了,但是像我这种守财奴性格,萌币肯定是越多越好啦。

回想起刚入站那几天辛苦的点赞和打卡,我就用我贫瘠的知识写了这段脚本。

应当具备的能力和条件

  1. 一台服务器或者类似的设备。因为我手头有一台轻量的服务器,所以我这段程序是基于谷歌浏览器及其驱动而写的,所以如果想用这段程序,你应当有一台服务器或者类似的设备,而云函数恐怕是不能运行的
  2. 能读懂python的基础语法,当然基础实际上就够了,毕竟我也很菜,用的这个自动化库和按键精灵没什么区别,只是因为我的服务器是无界面的linux,不然我可能就用windows上别的图形化自动化工具了
  3. 会用百度
  4. 懂得提问的技巧
  5. 不要向我发出代挂的请求
  6. 如果是大佬,请别喷我

代码和我遇见的坑

#需要的库
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from aip import AipOcr
import time
#百度api文字识别的应用码,自己注册账号填入,详情见预备知识3
APP_ID = '你的appid'
API_KEY = '你的apikey'
SECRET_KEY = '你的secretkey'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
username='你的账号(邮箱)'
password='你的密码'
#对浏览器的配置项,我也是网上抄的,主要是为了无界面运行且不崩溃
opt = Options()
opt.add_argument('--no-sandbox')
opt.add_argument('window-size=1920x1080')
opt.add_argument('--disable-gpu')
opt.add_argument('--hide-scrollbars')
opt.add_argument('--headless')
#登录部分
def m_login():
    global driver
    #下面前两项driver是用微软Edge控制的,第三项是chrome浏览器控制的,
    #要么注释掉前两项,要么注释掉第三项,具体看你用的是什么浏览器
    #忘了说,不管哪个都还需要其对应的浏览器驱动,
    #不是只装浏览器就行,详情看预备知识3
    driver = webdriver.Edge()
    driver.maximize_window()
    #driver = Chrome(options=opt)
    #没什么技术含量,就模拟真人点击
    driver.get("https://www.moezone.dev/")#访问首页
    driver.find_element(By.XPATH,'/html/body/div[12]/div/div[2]/div/footer/a[1]').click()#点欢迎信息
    driver.find_element(By.XPATH,'/html/body/div[5]/div[2]/div/div[3]/div[1]/a').click()#点登录
    driver.find_element(By.NAME,'email').send_keys(username)#输入账号
    time.sleep(1)#防止过快出错,等一会,下面的sleep函数都是这个意思
    driver.find_element(By.NAME,'pwd').send_keys(password)#输入密码
    time.sleep(1)
    img=driver.find_element(By.XPATH,'/html/body/div[12]/div/div[2]/div/form/div/div/div/div[4]/div/div[2]/img')#找到验证码
    img.screenshot('001.png')#保存验证码
    f=open('001.png','rb')#打开验证码
    imgdata=f.read()#读取验证码的二进制信息
    yzm=client.basicGeneral(imgdata)#发验证码给百度并返回信息
    f.close()#关闭打开的图片
    yzm=yzm['words_result'][0]['words']#提取出4位数字
    time.sleep(1)
    driver.find_element(By.NAME,'captcha').send_keys(yzm)#输入验证码
    time.sleep(1)
    driver.find_element(By.XPATH,'/html/body/div[12]/div/div[2]/div/form/footer/button').click()#点欢迎信息
    time.sleep(3)
    driver.find_element(By.XPATH,'/html/body/div[12]/div/div[2]/div/header/div/a').click()#忘了点啥了
    driver.find_element(By.XPATH,'/html/body/div[5]/div[2]/div/nav/ul/li[1]').click()#点一次首页
#验证码识别很有可能出错,对登录进行异常处理
def m_tlogin():
    try:
        m_login()
        print("登录成功")
        return False#成功返回False
    except:
        driver.close()#出错后关闭浏览器
        print('登录失败,重新登录')
        return True#然后返回True
def m_daka():
    driver.find_element(By.XPATH,'/html/body/div[5]/div[2]/div/div[3]/div[2]').click()#点签到
    time.sleep(3)
    driver.find_element(By.XPATH,'/html/body/div[12]/div/div[2]/div/footer').click()#点提示信息
#打过卡了再打会报错,异常处理
def m_tdaka():
    try:
        m_daka()
        print('打卡成功')
        return False#返回False
    except:
        print('打过卡了')
        return False#还是返回False
#进入最新文章页面
def enternew():
    time.sleep(1)
    ele=driver.find_element(By.XPATH,'/html/body/div[8]/div[2]/div[2]/div/article[8]/div/a/img')#定位一个元素
    driver.execute_script("arguments[0].scrollIntoView();",ele)#滚动到合适位置
    time.sleep(1)
    driver.find_element(By.XPATH,'/html/body/div[8]/div[2]/a').click()#点进最新文章
#对文章进行一次点赞
def m_dianzan_one(i):
    time.sleep(1)
    driver.execute_script('window.scrollBy(0,{})'.format(i*300-300))#滚动找元素
    time.sleep(1)
    xrul='/html/body/div[7]/div[1]/article[{}]/div[2]/a'.format(i)#获取文章的Xpath链接
    el=driver.find_element(By.XPATH,xrul).get_attribute('href')#获取文章的url链接
    driver.get(el)#打开文章页
    time.sleep(1)
    ele=driver.find_element(By.XPATH,'/html/body/div[7]/div/div[1]/div/a[1]')#准备翻到下面
    driver.execute_script("arguments[0].scrollIntoView();",ele)#翻到下面准备点赞
    time.sleep(1)
    js = 'document.getElementsByClassName("inn-singular__post__toolbar__item__link")[0].click();'#不知道为什么用click点不了,用了js点击
    driver.execute_script(js)#点击
    time.sleep(1)
    driver.back()#返回文章列表页
    print('点赞了第{}篇文章'.format(i))
    time.sleep(1)
#循环点赞12次,好像12次是上限吧
def m_dianzan():
    enternew()
    for i in range(1,13):
        m_dianzan_one(i)
    print('点赞成功')
#主函数=登录+打卡+点赞
def main():
    a=True
    while a:
        a=m_tlogin()
    b=True
    while b:
        b=m_tdaka()
    m_dianzan()
#循环执行,每24小时1次
if __name__=='__main__':
    while True:
        main()
        driver.close()
        print('执行成功,等待24小时后执行')
        time.sleep(24*60*60)
运行截图

 

 

总结

本文适合有一定基础的萌友食用,我也不能写的太细,泛滥的话也不太合适,有兴趣搞的不看我这个自己也能慢慢摸出来

不过要是想用我这个,改一点前面的账号和浏览器类型基本上就能用了。

没什么要下载的,我贴个Edge的驱动程序算了,虽然网上一搜就能搜到

  • 萌の领域是一个和谐有爱的ACG文化交流圈,这里是众多二次元文化爱好者的集结地。
  • 本文章是由 萌の领域 会员 乐天派 的创作作品。
  • 转载文章时请保留原出处,资源请重新打包!并且附上完整的地址:https://www.moezone.dev/317918.html
  • 资源分享不易,有时间的萌友可以重新打包上传一份,发链接到评论区接力分享,薪火相传呢~
  • 如资源链接失效,请先查看是否是两个星期之前的资源,超过时间默认不补档,请考虑是否要点击下载。其他情况请点击上方举报,等待管理员处理。
  • 下载之前请查看评论区,如果有人提示资源已失效请不要点击下载浪费萌币,也不要说作者骗币,下载消耗的萌币是被服务器回收了。

© 2019 - 2024 💝 Www.MoeZone.Dev