一、使用python获取黄金的价格
通过正则表达式找到时间和价格,直接上code:
def getPageContent(self):
myUrl='xxx网址'+str(self.page)
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
headers = { 'User-Agent' : user_agent }
req = urllib2.Request(myUrl, headers = headers) #模拟浏览器
myResponse=urllib2.urlopen(req)
myPgae=myResponse.read()
myItems=re.findall('(\d{4}-\d{1,2}-\d{1,2})',myPgae,re.S) #匹配时间的正则表达式
for item in myItems:
content=item.strip()
myItems1=re.findall('(.*?)',myPgae,re.S)
for item1 in myItems1:
content1=item1.strip()
print content + '\n' +content1 +' 元/克'
二、发送邮件提醒
fromaddr = "xxx@163.com"
smtpaddr = "smtp.163.com"
toaddrs = "xxxxx@qq.com"
if float(content1) <= 265:
subject = "黄金可以买入 "+content+" "+content1+'元/克'
elif float(content1) >= 280:
subject = "黄金需要卖出 "+content+" "+content1+'元/克'
else:
return
password = "xxx"
msg = ""
mail_msg = MIMEMultipart()
if not isinstance(subject,unicode):
subject = unicode(subject, 'utf-8')
mail_msg['Subject'] = subject
mail_msg['From'] =fromaddr
mail_msg['To'] = toaddrs
mail_msg.attach(MIMEText(msg, 'html', 'utf-8'))
try:
s = smtplib.SMTP()
s.connect(smtpaddr) #连接smtp服务器
s.login(fromaddr,password) #登录邮箱
s.sendmail(fromaddr, toaddrs, mail_msg.as_string()) #发送邮件
print u'发送成功'
s.quit()
except Exception,e:
print "Error: unable to send email"
print traceback.format_exc()
三、配置crontab定时运行提醒
使用linux下的crontab来配置:
crontab -e
1 8 * * 1-5 /usr/bin/python /home/pi2/get_gold_3.py
1、这部分遇到个麻烦,不管当前用户或者root,怎么配置都不成功,最后发现crontab是针对用户的,而执行脚本是放在另外一个用户下,尝试在此用户下配置,结果ok,root下配置都无法正常执行很不解。
2、由于脚本里有print打印可能导致执行不成功,可以在每条命令后增加:
>/dev/null 2>&1
没有尝试,将脚本里的print全部注释掉了,。
后续使用BeautifulSoup模块(HTML相关的模块)来实现吧。。。
GitHub地址:
https://github.com/xaiolos/First
参考:
crontab执行语句重定向:
http://www.pooy.net/ubuntu-open-crontab-logging-and-resolution-no-mta-installed-discarding-output-problem.html
开启crotab日志:
http://blog.csdn.net/w6611415/article/details/36932053
python自动发送邮件脚本:
http://blog.csdn.net/kevin_zhai/article/details/47720789
网友评论