Python也可以很暖男之每日发送爱词霸每日一句中英文+日期+农历+天气预报+各种天气指数(只学了一个多月新手的第二个实战项目,代码写的不好,请轻喷,谢谢) 事情来由:老婆每天早上起来就要问今天温度如何,天气咋样,适合穿什么样的衣服。天天问得扛不住了,所以就想把天气信息+什么紫外线指数,空气指数,穿衣指数,洗车指数等在起床之前发给她,就可以自己看了。顺带再来一句爱词霸的每日一句(最终结果:太傻太天真,发是发了,可依旧要问。T_T,欲哭无泪) 实现的功能是爬取中国天气网,爱词霸每日一句,结合日期各种天气指数,通过微信发送。主要有六个功能函数和一个主函数: 有现成的sxtwl模块,我只是numCn中的把“零”改成了“天” 今天日期:2020年4月19日, 星期天 ImapBox上有很多代码,这个因为有API,爬取比较简单: @喝一碗laowang的心灵鸡汤(_): 网址:https://www.weather.com.cn/forecast/ 把对应的代码加入到访问的网址中: 爬取对应的各种天气指数,同样用的也是笨笨的正则表达式 @看一看XXXX的天气预报(_): 使用ITCHAT库自动登录和发送,微信账号不可用,只能用昵称。只要不频繁登录,频繁发送信息,问题都不会很大。 整体功能和代码都介绍完毕,代码写得不好,各位看官请见谅。肯定有很大的改进空间,也欢迎给位一起讨论,献丑了。 目前也遇到两个无法解决的问题,请教各位大神: – [ ] 无法自动登录微信,必须手工扫一扫。有人说换个思路,直接用werobot 或者图灵机器人,这个我可以研究下Python也可以很暖男
为了造福各钢铁直男, 现已经封装成EXE可执行程序,想要的可以直接留言发邮箱。输入你的称呼,所在城市(最好大城市),对方的微信昵称。微信扫一扫弹出的二维码,后续就交给程序了,效果如下。(当然,单身狗也可以自己发给自己)
总体思路
函数一、获取当天日期和农历
import json,re,datetime import requests,itchat,sxtwl def getYMD():#获得对应的农历 ymc = [u"十一", u"十二", u"正", u"二", u"三", u"四", u"五", u"六", u"七", u"八", u"九", u"十"] rmc = [u"初一", u"初二", u"初三", u"初四", u"初五", u"初六", u"初七", u"初八", u"初九", u"初十", u"十一", u"十二", u"十三", u"十四", u"十五", u"十六", u"十七", u"十八", u"十九", u"二十", u"廿一", u"廿二", u"廿三", u"廿四", u"廿五", u"廿六", u"廿七", u"廿八", u"廿九", u"三十", u"卅一"] Gan = ["甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"] Zhi = ["子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"] ShX = ["鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪"] numCn = ["天", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"] lunar = sxtwl.Lunar() year = datetime.datetime.now().year month = datetime.datetime.now().month rday = datetime.datetime.now().day day = lunar.getDayBySolar(year, month, rday) d = str(day.y) + "年" + str(day.m) + "月" + str(day.d) + "日" if day.Lleap: a = "润" + ymc[day.Lmc] + "月" + rmc[day.Ldi] + "日" else: a = ymc[day.Lmc] + "月" + rmc[day.Ldi] + "日" b = "星期" + numCn[day.week] c = Gan[day.Lyear2.tg] + Zhi[day.Lyear2.dz] + "年" + Gan[day.Lmonth2.tg] + Zhi[day.Lmonth2.dz] + "月" + Gan[ day.Lday2.tg] + Zhi[day.Lday2.dz] + "日" txt = '今天日期:'+d + ', ' + b + 'n'+'中华农历: ' + a + ', ' + c return txt
中华农历: 三月廿七日, 庚子年庚辰月壬辰日函数二、获取爱词霸每日一句
def get_iciba_everyday_chicken_soup(xingming): url = 'https://open.iciba.com/dsapi/' r = requests.get(url) all = json.loads(r.text) Englis = all['content'] Chinese = all['note'] everyday_soup = '@喝一碗'+xingming+'的心灵鸡汤(^_^):'+'n'+Englis+'n'+Chinese+'n' return everyday_soup
Everything in excess is opposed to nature.
在自然中,一切事物过犹不及。函数三、获取中国天气网城市对应的代码
每个城市都有对应的九位数代码,由此形成城市与代码的字典,我是新手,只能用笨笨的正则表达式。
def getURLcode(location):#获取城市对应的代码 url = "https://www.weather.com.cn/forecast/" r = requests.get(url) r.raise_for_status() r.encoding = r.apparent_encoding txt = r.text loc = re.findall(r' target="_blank">[u4e00-u9fa5]{1,5}?</a></li>', txt) cod = re.findall(r' <li><a href="https://www.weather.com.cn/weather1d/[0-9]{9}.shtml"', txt) loca, loca_1, code, code_1 = [], [], [], [] a_cdict = {} for item in loc: loca.append(re.findall(r'target="_blank">(.*?)</a></li>', item)) for i in range(len(loca)): loca_1.append(loca[i][0]) loca_1.insert(47, '固原')#这个城市没有爬取到 for item in cod: code.append(re.findall(r'[0-9]{9}', item)) for i in range(len(code)): code_1.append(code[i][0]) a_cdict = dict(zip(loca_1, code_1)) return str(a_cdict[location])
函数四、获取城市代码对应的天气网址
def getURL(code):#获取城市对应的链接 url = 'https://www.weather.com.cn/weather/'+code+'.shtml' return url
函数五、获取对应的天气情况
def geturltext(xingming,html):#获取天气情况 r = requests.get(html) r.raise_for_status() r.encoding = r.apparent_encoding tx = r.text aim = re.findall(r'<input type="hidden" id="hidden_title" value="(.*?)月(.*?)日(.*?)时(.*?) (.*?) (.*?) (.*?)"', tx) airdata = re.findall(r'<li class="li6">n<i></i>n<span>(.*?)</span>n<em>(.*?)</em>n<p>(.*?)</p>', tx) ult_index = re.findall(r'<li class="li1">n<i></i>n<span>(.*?)</span>n<em>(.*?)</em>n<p>(.*?)</p>n</li>', tx) cloth_index = re.findall(r'<i></i>n<span>(.*?)</span>n<em>(.*?)</em>n<p>(.*?)</p>n</a>n</li>n<li class="li4">', tx) wash_index = re.findall(r'<li class="li4">n<i></i>n<span>(.*?)</span>n<em>(.*?)</em>n<p>(.*?)</p>', tx) txt1 = '@看一看'+xingming+'的天气预报(^_^):'+'n'+getYMD()+'n' txt2 = '天气情况: '+aim[0][5]+'n'+'温度情况: '+aim[0][6]+'n' txt3 = '空气指数: '+airdata[0][0]+', '+airdata[0][2]+'n' txt4 = '紫外线指数: '+ult_index[0][0]+', '+ult_index[0][2]+'n' txt5 = '穿衣指数: '+cloth_index[0][0]+', '+cloth_index[0][2]+'n' txt6 = '洗车指数: '+wash_index[0][0]+', '+wash_index[0][2]+'n' txt = 'n'+txt1+txt2+txt3+txt4+txt5+txt6 return txt
今天日期:2020年4月19日, 星期天
中华农历: 三月廿七日, 庚子年庚辰月壬辰日
天气情况: 多云转小雨
温度情况: 24/17°C
空气指数: 中, 易感人群应适当减少室外活动。
紫外线指数: 中等, 涂擦SPF大于15、PA+防晒护肤品。
穿衣指数: 舒适, 建议穿长袖衬衫单裤等服装。
洗车指数: 不宜, 有雨,雨水和泥水会弄脏爱车。函数六、微信自动发送
def sentauto(nicheng,txt): itchat.auto_login() result = itchat.search_friends(nickName=nicheng) user_name = result[0]['UserName'] itchat.send_msg(txt, user_name)
函数七、主函数main()
def main(): print("-"*30+'程序使用说明'+"-"*30) print('此程序功能在于发送给固定的一人,每天双击运行扫描就可以发送天气预报以及中英文每日一句') print('1、数据来源:中国天气网(可能有些城市天气网上搜不到),爱词霸每日一句') print('2、只能使用昵称来搜索,微信号不可用。如果昵称有特殊字符,直接在微信下复制即可') print('3、只能发给一个人,一个人,一个人!不要三心二意') print('4、输完信息后会弹出二维码,微信扫一扫即可以发送成功') print("-" * 30 + '程序使用说明' + "-" * 30) xingming = input('你想以何种称呼发送此信息:') location = input('您的地点(不要输入‘市’字)用于查询天气情况:') nicheng = input('请输入对方的微信昵称(请确保昵称正确,否则查不到):') code = getURLcode(location) html = getURL(code) text = get_iciba_everyday_chicken_soup(xingming)+geturltext(xingming,html) sentauto(nicheng,text) main()
– [ ] 电脑无法天天7*24小时开机,代码虽然可以用第三方库设定时间运行,但是如果电脑没开机咋办?有人说部署在什么云服务器上,这个我是真的懵逼,完全不会,请大神指教。
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算