【技术教程】萌の领域每日自动打卡+点赞
最近在自学python,于是就……不知道龙姐姐会不会给我审核通过 最后审核由 龙姐 UID:1
前言
最近忽然就对python感兴趣了,然后看着网上的教程自学了几天,想着要实际运用到生活中。
想必如今大家的萌币都早已不缺了,但是像我这种守财奴性格,萌币肯定是越多越好啦。
回想起刚入站那几天辛苦的点赞和打卡,我就用我贫瘠的知识写了这段脚本。
应当具备的能力和条件
- 一台服务器或者类似的设备。因为我手头有一台轻量的服务器,所以我这段程序是基于谷歌浏览器及其驱动而写的,所以如果想用这段程序,你应当有一台服务器或者类似的设备,而云函数恐怕是不能运行的
- 能读懂python的基础语法,当然基础实际上就够了,毕竟我也很菜,用的这个自动化库和按键精灵没什么区别,只是因为我的服务器是无界面的linux,不然我可能就用windows上别的图形化自动化工具了
- 会用百度
- 懂得提问的技巧
- 不要向我发出代挂的请求
- 如果是大佬,请别喷我
代码和我遇见的坑
#需要的库from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.chrome.options import Optionsfrom aip import AipOcrimport time#百度api文字识别的应用码,自己注册账号填入,详情见预备知识3APP_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.me/")#访问首页 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#然后返回Truedef 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的驱动程序算了,虽然网上一搜就能搜到
