情侣之间除了平日一起探究有趣的事情,总是少不了就是 “日常早晚请安”

1、请安情景一
男: 今日阳光明媚,多云转晴,小懒猪快起床啦
女:早起啦,话说你是不是还在被窝里呢
男:嘿嘿

2、请安情景二
女:哎呀,挺晚了呢,早点休息吧,晚安
男:晚安
女:么么哒
一分钟后。。。
女:快说,你是不是还在扣手机呢
男:嘿嘿

另外你的小可爱有没有要求你每晚给她讲故事,无奈故事库那是相当匮乏!那可不可以让聊天更智能一些呢!于是懒惰的程序员学会了爬虫,嗯就是在网页上会爬的虫,下面介绍通过爬虫~实现定时的早晚安,告别手动,人工智能!

一、早安,天气预报

使用python的第三方模块itchat实现早安问候,itchat是个基于网页版微信的python微信API。功能目前做到基本可以满足正常的消息收发,信息的获取等等。itchat的详细介绍和使用可参加官网:itchat

话不多说直接给出程序源码,下面天气是从中国天气官网上获取的北京市海淀区的天气,如果是其他地区可更换网址,:

from urllib.request import urlopen
from bs4 import BeautifulSoup
import itchat as ic
import time
import redef getWeather():# 使用BeautifulSoup获取天气信息resp=urlopen('http://www.weather.com.cn/weather/101010200.shtml')soup=BeautifulSoup(resp,'html.parser')tagDate=soup.find('ul', class_="t clearfix")dates=tagDate.h1.stringtagToday=soup.find('p', class_="tem")try:temperatureHigh=tagToday.span.stringexcept AttributeError as e:temperatureHigh=tagToday.find_next('p', class_="tem").span.stringtemperatureLow=tagToday.i.stringweather=soup.find('p', class_="wea").stringtagWind=soup.find('p',class_="win")winL=tagWind.i.stringcontent = '早上好,小宝!\n 今日分海淀区天气请注意查收:\n' + '今天是:' + dates + '\n' + '风级:' + winL + '\n' + '最低温度:' + temperatureLow + '\n' + \'最高温度:' + temperatureHigh + '\n' + '天气:' + weather + '\n'return contentdef main():try:message = getWeather()print('成功获取天气信息')except:message = ""print("获取天气信息失败")# 参数hotReload=True实现保持微信网页版登陆状态,下次发送无需再次扫码ic.auto_login(hotReload=True)users = ic.search_friends(name = '手动打码')userName = users[0]['UserName']ret = ic.send(msg = message, toUserName = userName)if ret:print("成功发送")else:print("发送失败")time.sleep(60)ic.logout()if __name__ == '__main__':main()

二、午安,每日一练

每天督促女友和自己学习也是十分重要的,下面便是通过python的wxpy模块实现给女友定时发送金山词霸每日一练的原文和翻译,wxpy模块的详细介绍和使用可参见官网:wxpy,代码呈上:

from __future__ import unicode_literals
from threading import Timer
from wxpy import *
import requests
import random# 设置cache_path=True, 保持微信登陆状态
bot = Bot(cache_path=True)
# linux执行登陆请调用下面的这句
# bot = Bot(console_qr=2,cache_path="botoo.pkl")
def get_news():# 获取金山词霸的每日一句的英文和翻译url = "http://open.iciba.com/dsapi/"r = requests.get(url)content = r.json()['content']note = r.json()['note']return content, notedef main():try:contents = get_news()# 你朋友的微信名称,不是备注,也不是微信帐号my_friend = bot.friends().search('手动打码')[0]my_friend.send(contents[0])my_friend.send(contents[1])my_friend.send(u"小宝,每日一练开始了!")# 每86400秒(1天),发送1次t = Timer(86400, send_news)# 通过生成随机数,使得每次发送的时间不固定ran_int = random.randint(0,100)t = Timer(86400+ran_int,send_news)t.start()except:my_friend.send(u"今日消息发送失败了")if __name__ == "__main__":main()

三、晚安,睡前讲故事

哈哈,睡前小故事不用愁,爬虫让睡前故事无穷无尽!上面两种方式都是微信定时发送,下面给出不同的方式,发送小故事到亲爱的邮箱,每日邮箱踩一踩:

import requests
from bs4 import BeautifulSoup
import smtplib
from email.mime.text import MIMEText
import random
import timedef parse_html(url, headers):try:r = requests.get(url, headers=headers, timeout=60)r.raise_for_status()r.encoding = r.apparent_encodinghtml_content = r.textreturn html_contentexcept:return "爬取失败"def parse_link(urllist, html):url_baisc = 'http://www.tom61.com/'soup = BeautifulSoup(html, 'html.parser')temp = soup.find('dl', attrs={'class': 'txt_box'})link_list = temp.find_all('a')for link in link_list:urllist.append(url_baisc + link.get('href'))def sendemail(url, headers):# 发送方邮箱msg_from = '手动打码'# 填入发送方邮箱的授权码,不是密码,如使用网易邮箱,需要到网易邮箱里申请passwd = '手动打码'# 接收方邮箱receivers = ['手动打码']# 邮件主题subject = '小宝,今日份的睡前小故事,请查收'# 下面爬取主页面故事内容html_content = parse_html(url, headers)text = []soup = BeautifulSoup(html_content, 'html.parser')temp = soup.find('div', class_='t_news_txt')for one in temp.findAll('p'):text.append(one.text)content = "小宝,今晚开始讲故事喽:\n\n" + "\n".join(text)# 配置发送邮件信息msg = MIMEText(content)msg['Subject'] = subjectmsg['From'] = msg_frommsg['To'] = ','.join(receivers)try:# 邮件服务器及端口号,不同邮箱会有不同s = smtplib.SMTP_SSL("smtp.163.com", 465)s.login(msg_from, passwd)s.sendmail(msg_from, msg['To'].split(','), msg.as_string())print("发送成功")except:print("发送失败")finally:s.quit()def main():headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',}# 设定时间,保证明天发送不同的故事initial_time = time.mktime(time.strptime('2019-03-19', "%Y-%m-%d"))today = time.strftime('%Y-%m-%d', time.localtime(time.time()))timeArray = time.strptime(today, "%Y-%m-%d")now_time = int(time.mktime(timeArray))html_idx = int((now_time - initial_time) // 86400)url_list = []url = 'http://www.tom61.com/s/aiqinggushi/'html_content = parse_html(url, headers)parse_link(url_list, html_content)print("爬取故事链接完成")if html_idx < len(url_list):sendemail(url_list[html_idx], headers)else:print('该页面故事网址以结束,请更换!')if __name__ == '__main__':main()

四、crontab,定时任务

如何让程序定时爬起来呢,可以使用crontab命令,使用crontab可以在指定的时间执行脚本或者一系列Linux命令。例如系统管理员安排一个备份任务使其每天都运行,这样便可以实现每日定时的消息发送了。首先你需要在服务器上安装crontab,cron 是linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:

/sbin/service crond start : 启动服务
/sbin/service crond stop : 关闭服务
/sbin/service crond restart : 重启服务
/sbin/service crond reload : 重新载入配置

crontab常用命令有:
crontab –e : 修改 crontab 文件. 如果文件不存在会自动创建。
crontab –l : 显示 crontab 文件。
crontab -r : 删除 crontab 文件。
crontab -ir : 删除 crontab 文件前提醒用户。

crontab文件中命令书写规则,下面给出crontab 文件的书写格式:

{minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script}
minute: 区间为 0 – 59
hour: 区间为0 – 23
day-of-month: 区间为0 – 31
month: 区间为1 – 12. 1 是1月. 12是12月.
Day-of-week: 区间为0 – 7. 周日可以是0或7.Crontab 示例
1. 在 12:01 a.m 运行,即每天凌晨过一分钟。这是一个恰当的进行备份的时间,因为此时系统负载不大。
1 0 * * * /root/bin/backup.sh2. 每个工作日(Mon – Fri) 11:59 p.m 都进行备份作业。
59 11 * * 1,2,3,4,5 /root/bin/backup.sh
or
59 11 * * 1-5 /root/bin/backup.sh3. 每5分钟运行一次命令
*/5 * * * * /root/bin/check-status.sh4. 每个月的第一天 1:10 p.m 运行
10 13 1 * * /root/bin/full-backup.sh5. 每个工作日 11 p.m 运行。
0 23 * * 1-5 /root/bin/incremental-backup.sh

懒惰的程序员快行动起来吧,附上不知在哪里看到的专属程序员的情诗一首,专心做程序员届的伪文青:

世界上最遥远的距离
不是生与死的距离
是你在if我在else
虽然时常一起出现
但永远不会结伴执行
感谢try-catch
让我有机会成为你的finally
守在这必经的渡口

程序员的浪漫:晨起给女友定时发送天气预报,睡前给女友定时讲故事相关推荐

  1. 前端程序员的浪漫动态告白表白女友源码

    动态告白表白女友源码前端程序员的浪漫,是一款网页动态表白源码,直接点击html看效果,浏览器打开就好了,兄弟们可以上车了. 特别说明: 1.文字在 take.js 里面改 或者 index.html里 ...

  2. OSChina 周一乱弹 —— 程序员的浪漫你不懂

    2019独角兽企业重金招聘Python工程师标准>>> 又是新的一周了,你们周末过得怎样呢?你们是在好好地陪妹子玩耍,还是在撸代码? 本人苦逼男程一枚,异地恋.每次女友打电话问我在干 ...

  3. OSChina 情人节乱弹 ——我们程序员的浪漫

    2019独角兽企业重金招聘Python工程师标准>>> [今日歌曲] @n7then:明天就是情人节啦,向小小编辑投稿一曲. Say you won't go - James Art ...

  4. 程序员的浪漫,你值得拥有!

    作者 | 小游子: 来源 | CSDN 博客 今天我们就来盘点一下 GitHub 程序员开源的情人节表白的代码.来一睹大牛们是怎么过情人节的,是怎么跟自己的女朋友表白的?(文中图片均来自项目本身) 前 ...

  5. object转成实体对象_程序员的浪漫,new一个对象

    程序员都喜欢 面向对象编程,但如果你没有对象怎么办?当然是 new 一个对象出来. 面向对象编程 是一种程序设计思想,而不是真正的面向你的对象去编程.如果你真的这么做了,恭喜你获得:你爱我还是爱电脑? ...

  6. python浪漫代码-使用Python代码的程序员也浪漫

    原标题:使用Python代码的程序员也浪漫 代码也浪漫:用Python放一场圣诞节烟花秀! 天天敲代码的朋友,有没有想过代码也可以变得很酷炫又浪漫?今天就教大家用Python模拟出绽放的烟花庆祝昨晚法 ...

  7. 她说程序员不懂浪漫,生日宴上惨变单身狗,其实,程序员的浪漫你不懂!

    css蛋糕 谁说程序员不懂得浪漫,只是程序员的浪漫你不懂!PS:人家都不懂,你再浪漫有啥用,最后还不是单身狗? 说实在的,以前也分享过一个程序员用纯CSS画的一个MAC,代码就三千多行,这个蛋糕虽然代 ...

  8. Java程序员情人节_盘点程序员情人节的表白,前端程序员最浪漫,后端不服来战...

    今天是 2 月 14 日情人节,我看公众号后台有好多人在回复关键字:情人节表白代码.我想,我作为大家的校长,必须给大家送一波福利代码啊!我是真没想到,竟然很多程序员都想用代码表白,还整的挺浪漫的,看来 ...

  9. 生日快乐程序员的浪漫代码_python告白代码,只属于程序员的浪漫

    不知何时,不知何因,程序员这个行业成为大家茶余饭后取乐的无辜群体.只要说到程序员,脑海中就浮现出刻板印象,标配穿搭:格子衫,牛仔裤,黑框眼镜.当然秃顶也是必须的,更狠的吐槽还有邋里邋遢,不懂浪漫,不知 ...

  10. c++获取子类窗口句柄位置_干货分享:用一百行代码做一个C/C++表白小程序,程序员的浪漫!...

    前言:很多时候,当别人听到你是程序员的时候.第一印象就是,格子衫.不浪漫.直男.但是程序员一旦浪漫起来,真的没其他人什么事了.什么纪念日,生日,情人节,礼物怎么送? 做一个浪漫的程序给她,放上你们照片 ...

最新文章

  1. Yii2.0 模态弹出框+ajax提交表单
  2. Cassandra 总接归纳
  3. 前端小白的 docker 配置nginx踩坑之旅
  4. Struts2、Spring3、MyBatis3整合ExtJS,完成ColumnTree 【一】
  5. sqlserver2005分布式架构负载
  6. php7和php8内核有区别吗,不要在PHP7中踩这些坑
  7. 2.Building Models from Convolutions
  8. 信息学奥赛C++语言: 博物馆
  9. java 陷阱_Java基础知识陷阱
  10. PWDX查找程序执行路径
  11. flutter 进度条_OkHttp 在 Flutter中的运用场景,Flutter语言连接网络的方法介绍
  12. ps色板文件怎么导入?
  13. 致敬学习者丨黑马2020年度TOP榜视频教程,一键领!
  14. 导出苹果安装包IPA的几种方法
  15. markdown公式大全
  16. 为什么打印机打印照片模糊_家用喷墨打印机打印照片不清楚怎么办 是什么原因?...
  17. 计算机报名上传图片需要flash,公务员报名上传照片时需要的flash控件是什么
  18. html+圆角梯形,用CSS圆角梯形
  19. 海尔消费金融暂停“首付贷”
  20. 达梦数据库使用方法(简)

热门文章

  1. 联想 23 亿美元收购 IBM x86 服务器业务
  2. Python爬取百度网盘的目录
  3. (转)看盘ABC:相对强弱指标(RSI)
  4. python 窗口化 exe
  5. 人生苦短,我用JRebel
  6. 专业的餐饮软件应具备的功能
  7. 周传雄【男人.海洋】
  8. 暮色的江湖,进击的“BAT”
  9. js中介者模式是什么意思?
  10. 苹果6怎么截屏_这才是iPhone截屏的正确方法!快速截屏6到飞起!你还不知道?...