40行Python代码实现天气预报和每日鸡汤推送功能


Posted in Python onFebruary 27, 2020

情人节刚过去几天,但是这和我们程序员有什么关系呢,对我们来说,万物皆对象。但是啊,小编为了讨得仰慕已久的女神的欢心(真香),便用python爬取了爱词霸网站的每日一句和天气预报网站的天气预报,并且每天定时将内容推送到女神的手机短信中(代码实现,不需要短信费哦)。

好东西要学会分享,因此小编打算分三个步骤来教大家实现,最后会给出源代码。

第一步,实现爬取爱词霸网站的每日一句: 爱词霸的每日一句包括了英文版和中文版。爬取下来实际上4行有效代码就能搞定,不过为了提高代码的重用性,就将这个功能封装成了一个函数,以后需要时候用一行代码调用它便行了。下面贴出第一步的源代码,注释写得很详细了,有不懂的可以在文章下面提问哦。

# 小技巧:pycharm中,alt+enter快捷键可快速安装缺失库
import json
import requests

# 爬取爱词霸每日鸡汤
def get_iciba_everyday_chicken_soup():
 url = 'http://open.iciba.com/dsapi/' # 词霸免费开放的jsonAPI接口
 r = requests.get(url) 
 all = json.loads(r.text) # 获取到json格式的内容,内容很多
 # print(all) # json内容,通过这行代码来确定每日一句的键名
 Englis = all['content'] # 提取json中的英文鸡汤
 Chinese = all['note'] # 提取json中的中文鸡汤
 everyday_soup = Englis+'\n'+Chinese # 合并需要的字符串内容
 return everyday_soup # 返回结果

print(get_iciba_everyday_chicken_soup())

上面代码执行结果截图如下:成功爬取每日鸡汤,第一步实现。

40行Python代码实现天气预报和每日鸡汤推送功能

第二步,爬取天气预报网站的天气情况!

需要爬取的是天气网站的数据:http://www.tianqi.com/ 实现这个功能的所有代码也封装在了一个函数里面了,其实有效代码不到20行。调用函数的时候传入的参数改为对应城市的拼音就可。

import urllib.request # 需要安装 urllib 库
from bs4 import BeautifulSoup #需要安装 bs4 库


def get_weather(city_pinyin):
 # 声明头,模拟真人操作,防止被反爬虫发现
 header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64;\
 rv:23.0) Gecko/20100101 Firefox/23.0'}
 # 通过传入的城市名拼音参数来拼接出该城市的天气预报的网页地址
 website = "http://www.tianqi.com/" + city_pinyin + ".html"
 req = urllib.request.Request(url=website, headers=header)
 page = urllib.request.urlopen(req)
 html = page.read()
 soup = BeautifulSoup(html.decode("utf-8"), "html.parser")
 # html.parser表示解析使用的解析器
 nodes = soup.find_all('dd')
 tody_weather = ""
 for node in nodes: # 遍历获取各项数据
  temp = node.get_text()
  if (temp.find('[切换城市]')):
   temp = temp[:temp.find('[切换城市]')]
  tody_weather += temp
 # 去除字符串中的空行:
 tianqi = "".join([s for s in tody_weather.splitlines(True)
      if s.strip()])

 return tianqi # 返回结果

# 调用封装号好的函数获取天气预报,参数‘chongqing'是重庆的拼音:
print(get_weather('chongqing')) 
# 想查询哪个城市的天气情况,直接将参数替换为它的拼音即可

上面代码执行结果截图如下:

40行Python代码实现天气预报和每日鸡汤推送功能

经过了第一步和第二步是不是觉得爬取鸡汤和天气预报并没有想象中难呢,只用了20多行代码就搞定啦。代码有不懂的结合注释多思考就好了,实在想不通就提问。

现在只差最后一步了,虽然代码也不多,但相比前面的而言还是比较麻烦的一步,过程有点繁琐,小编当时绕了好久,毕竟想免费发短信出去就是在白嫖啊!不过,别担心,小编后面给你讲的明明白白。

第三步,代码实现免费发送短信功能!

这一步需要将第一步获取的每日鸡汤内容和第二步获取的城市天气预报内容发送到手机短信,过程有点麻烦,为了讲得更详细,小编决定另写一篇blog教大家实现最关键的一步。写完地址会更新贴出来。

最后一步,文章链接:Python15行代码实现免费发送手机短信

总结

到此这篇关于40行Python代码实现天气预报和每日鸡汤推送 的文章就介绍到这了,更多相关python实现天气预报和每日鸡汤推送内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
详解使用Python处理文件目录的相关方法
Oct 16 Python
python socket多线程通讯实例分析(聊天室)
Apr 06 Python
Django实现简单分页功能的方法详解
Dec 05 Python
python得到电脑的开机时间方法
Oct 15 Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
Jul 25 Python
python的faker库用法
Nov 28 Python
python3连接kafka模块pykafka生产者简单封装代码
Dec 23 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
Feb 09 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
May 23 Python
Python新手学习raise用法
Jun 03 Python
matplotlib基础绘图命令之bar的使用方法
Aug 13 Python
Python利用socket模块开发简单的端口扫描工具的实现
Jan 27 Python
15行Python代码实现免费发送手机短信推送消息功能
Feb 27 #Python
matlab中imadjust函数的作用及应用举例
Feb 27 #Python
浅析matlab中imadjust函数
Feb 27 #Python
matlab灰度图像调整及imadjust函数的用法详解
Feb 27 #Python
在python中利用dict转json按输入顺序输出内容方式
Feb 27 #Python
pytorch之Resize()函数具体使用详解
Feb 27 #Python
浅谈Python中的异常和JSON读写数据的实现
Feb 27 #Python
You might like
PHP调用VC编写的COM组件实例
2014/03/29 PHP
csdn 博客的css样式 v3
2009/02/24 Javascript
jquery插件之信息弹出框showInfoDialog(成功/错误/警告/通知/背景遮罩)
2013/01/09 Javascript
JS中 用户登录系统的解决办法
2013/04/15 Javascript
window.event.keyCode兼容IE和Firefox实现js代码
2013/05/30 Javascript
js内存泄露的几种情况详细探讨
2013/05/31 Javascript
浅析Node在构建超媒体API中的作用
2014/07/30 Javascript
php+ajax+jquery实现点击加载更多内容
2015/05/03 Javascript
javascript实现3D切换焦点图
2015/10/16 Javascript
基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理
2016/05/12 Javascript
jQuery实现移动端手机商城购物车功能
2016/09/24 Javascript
JavaScript常用正则函数用法示例
2017/01/23 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
node前端开发模板引擎Jade的入门
2018/05/11 Javascript
JS实现统计字符串中字符出现个数及最大个数功能示例
2018/06/04 Javascript
浅谈VUE单页应用首屏加载速度优化方案
2018/08/28 Javascript
vue-cli3.0+element-ui上传组件el-upload的使用
2018/12/03 Javascript
详解Vue的ref特性的使用
2020/01/24 Javascript
JS数组方法reduce的用法实例分析
2020/03/03 Javascript
JS前端模块化原理与实现方法详解
2020/03/17 Javascript
使用Python3中的gettext模块翻译Python源码以支持多语言
2015/03/31 Python
python通过paramiko复制远程文件及文件目录到本地
2019/04/30 Python
详解Python sys.argv使用方法
2019/05/10 Python
django数据模型on_delete, db_constraint的使用详解
2019/12/24 Python
用 Python 制作地球仪的方法
2020/04/24 Python
美国领先的医疗警报服务:Philips Lifeline
2018/03/12 全球购物
护理专业的自荐信
2013/10/22 职场文书
中国文明网签名寄语
2014/01/18 职场文书
生产部厂长助理职位说明书
2014/03/03 职场文书
毕业生简历自我评价范文
2014/04/09 职场文书
北京离婚协议书范文2014
2014/09/29 职场文书
2014年党风建设工作总结
2014/11/19 职场文书
2014年乡镇卫生院工作总结
2014/11/24 职场文书
2015年重阳节活动主持词
2015/07/30 职场文书
2016年国庆节假期旅游工作总结
2016/04/01 职场文书
Python中的pprint模块
2021/11/27 Python