欢迎光临
我们一直在努力

crontab python脚本,crontab运行python脚本

因为优矿内存默认1G,回测不够用,而目前所知唯一扩大内存的途径就获得积分兑换内存。积分的途径有每天签到、发帖获赞等方式,但是菜鸟获赞很难,所以就写一个签到获得积分的python脚本,使用selenium模块和crontab工具,最终部署于阿里云。

py脚本部分

这部分要上优矿的主页,摸清楚登录和签到流程,这需要多试几次找到最优流程。然后通过qq邮件通知签到成功和当前积分。

Qq邮箱设置参考https://www.cnblogs.com/kimsbo/p/10671851.html

python代码如下:

# -*- coding: utf-8 -*-“””Spyder EditorThis is a temporary script file.”””#用于有优矿签到,获得积分# -*- coding: UTF-8 -*-from pyvirtualdisplay import Displayfrom selenium import webdriver#from selenium.webdriver import FirefoxOptionsfrom selenium.webdriver.support.wait import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.common.by import Byfrom time import sleepimport smtplibfrom email.mime.text import MIMETextfrom email.header import Headerfrom bs4 import BeautifulSoupdef getpoint(url,name,password): driver.get(url) wait = WebDriverWait(driver, 60) #论坛右上角点击登录 wait.until(EC.presence_of_element_located((By.XPATH, ‘/html/body/div[2]/div/div[1]/div/div/div/a[1]’))).click() sleep(3) wait = WebDriverWait(driver, 100) wait.until(EC.presence_of_element_located((By.XPATH,”/html/body/div[2]/div/div[2]/div/div[3]/div/div/form/div[1]/input”))).send_keys(name) driver.find_element_by_xpath(“/html/body/div[2]/div/div[2]/div/div[3]/div/div/form/div[2]/input”).send_keys(password) driver.find_element_by_xpath(“/html/body/div[2]/div/div[2]/div/div[3]/div/div/form/a”).click() #driver.close() sleep(1) wait = WebDriverWait(driver, 60) wait.until(EC.presence_of_element_located((By.XPATH, ‘/html/body/div[2]/div/div[2]/div/div[2]/div[1]/button[2]’))).click() print(‘点击获得积分’) driver.refresh() sleep(2) pageSource=driver.page_source Soup=BeautifulSoup(pageSource) credits=Soup.find(‘a’, {‘href’:’/community/mall’}).get_text() print(credits) return creditsdef sendEmail(credits): smtp = “smtp.qq.com” sender=’XX@qq.com’ receiver=’XX@qq.com’ #这个密码不是邮箱密码,设置stmp后页面会显示 pwd=’XX’ title = ‘已运行,当前积分{}’.format(credits) contents = “{}发送给{}的邮件”.format(sender, receiver) ldqplxo = MIMEText(contents, ‘plain’) ldqplxo[‘From’] = Header(sender) ldqplxo[‘To’] = Header(receiver) ldqplxo[‘Subject’] = Header(title) mbdrewr = smtplib.SMTP_SSL(smtp, 465) mbdrewr.login(sender, pwd) mbdrewr.sendmail(sender, receiver, ldqplxo.as_string()) mbdrewr.quit()display=Display(visible=0,size=(1400,900))display.start()driver= webdriver.Firefox(executable_path=”你自己的路径/geckodriver”)url=’https://uqer.io/v3/community’name=’X’password=’X’credits=0while credits==0: credits=getpoint(url, name, password)sendEmail(credits)display.stop() crontab定时重复执行

虽然windows自带执行任务功能,但是由于签到需要联网,笔记本不能保证做到,所以还是阿里云比较合适。第一次使用crontab工具,中间坑很多。

pip install contab修改日志管理文件

参考这个https://blog.csdn.net/lrs1353281004/article/details/104007759

3.注意要使用绝对路径,否则系统内装了多个python,默认使用的不一定是你想用的。

4.设置输出

香港vps使用crontab过程,执行脚本可能会出错,这就需要查看报错情况,否则运行没结果,也不知道怎么回事。参考https://blog.csdn.net/u012129607/article/details/80418149

这次遇到一个大坑,脚本可以直接执行,但是用crontab一直不行,花了很长时间,才使用*/1 * * * * /root/XXXX.py> /tmp/load.log 2>&1 & 语句,通过查看load.log发现是执行selenium过程中找不到geckodriver。于是加上

driver=webdriver.Firefox(executable_path=你自己的路径/geckodriver),才大功告成。

?

Crontab的潜力还可以继续挖掘。

07512130

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。