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中使用gzip模块压缩文件的简单教程
Apr 08 Python
Python itertools模块详解
May 09 Python
基于wxpython实现的windows GUI程序实例
May 30 Python
python简单实现操作Mysql数据库
Jan 29 Python
Django之使用celery和NGINX生成静态页面实现性能优化
Oct 08 Python
树莓派极简安装OpenCv的方法步骤
Oct 10 Python
Python线程指南分享
Nov 19 Python
pytorch 实现tensor与numpy数组转换
Dec 27 Python
Python调用Windows命令打印文件
Feb 07 Python
Python request使用方法及问题总结
Apr 26 Python
PyCharm最新激活码PyCharm2020.2.3有效
Nov 18 Python
python日志通过不同的等级打印不同的颜色(示例代码)
Jan 13 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 验证码(倾斜,正弦干扰线,黏贴,旋转)
2013/06/29 PHP
PHP实现原比例生成缩略图的方法
2016/02/03 PHP
PHP的Yii框架中使用数据库的配置和SQL操作实例教程
2016/03/17 PHP
jquery蒙版控件实现代码
2010/12/08 Javascript
用javascript模仿ie的自动完成类似自动完成功的表单
2012/12/12 Javascript
多种方式实现JS调用后台方法进行数据交互
2013/08/20 Javascript
javascript使用location.search的示例
2013/11/05 Javascript
利用jQuery中的ajax分页实现代码
2016/02/25 Javascript
js传值后台中文出现乱码的解决方法
2016/06/30 Javascript
JavaScript中setTimeout的那些事儿
2016/11/14 Javascript
详解jQuery中的DOM操作
2016/12/23 Javascript
JS中使用media实现响应式布局
2017/08/04 Javascript
IScroll5实现下拉刷新上拉加载的功能实例
2017/08/11 Javascript
Node.js log4js日志管理详解
2018/07/31 Javascript
微信小程序实现留言板功能
2018/11/02 Javascript
使用koa2创建web项目的方法步骤
2019/03/12 Javascript
深入学习Vue nextTick的用法及原理
2019/10/08 Javascript
使用Vue实现简单计算器
2020/02/25 Javascript
JavaScript如何判断对象有某属性
2020/07/03 Javascript
Element DateTimePicker日期时间选择器的使用示例
2020/07/27 Javascript
超详细小程序定位地图模块全系列开发教学
2020/11/24 Javascript
Python中的yield浅析
2014/06/16 Python
Python发展史及网络爬虫
2019/06/19 Python
Python Django Cookie 简单用法解析
2019/08/13 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
2019/11/15 Python
Python Sympy计算梯度、散度和旋度的实例
2019/12/06 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
2020/06/10 Python
学生如何注册Pycharm专业版以及pycharm的安装
2020/09/24 Python
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
Ellos瑞典官网:北欧地区时尚、美容和住宅领域领先的电子商务网站
2019/11/21 全球购物
教育孩子心得体会
2014/01/01 职场文书
2016年大学自主招生自荐信范文
2015/03/24 职场文书
2015年乡镇残联工作总结
2015/05/13 职场文书
《学会看病》教学反思
2016/02/17 职场文书
Python使用UDP实现720p视频传输的操作
2021/04/24 Python
FFmpeg视频处理入门教程(新手必看)
2022/01/22 杂记