Python40行代码实现天气预报和每日鸡汤推送

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

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

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

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

# 爬取爱词霸每日鸡汤
def get_iciba_everyday_chicken_soup():
url = ‘http://open.iciba.com/dsapi/‘ # 爱词霸网站地址
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())

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

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

需要爬取的是天气网站的数据: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‘))
# 想查询哪个城市的天气情况,直接将参数替换为它的拼音即可

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

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

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

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

原文地址:https://www.cnblogs.com/benming/p/12343175.html

时间: 2024-08-16 11:54:48

Python40行代码实现天气预报和每日鸡汤推送的相关文章

用python40行代码编写的计算器

偶尔用脚本写点东西也是不错的 效果图 代码 from tkinter import * reset=True def buttonCallBack(event): global label global reset num=event.widget['text'] if num=='C': label['text']="0" return if num in "=": label['text']=str(eval(label['text'])) reset=True

财路网每日原创推送:终于按捺不住,腾讯也要上交易所发币?

据CCN最新消息称,腾讯游戏已经宣布与区块链电子竞技娱乐平台SLIVER.tv合作,创建一个电子竞技直播频道.据财路网记者查阅相关资料显示,该频道还发行了自己的代币Theta,而且还在众多知名交易所上市交易了,这是不是意味着腾讯在变相上交易所发币呢? 与区块链游戏直播合作据悉,腾讯合作的这个平台是一个全天候电子竞技直播频道,其中将包括来自FaZe Clan.Method和NRG的直播主,以及其他互动功能,比如游戏预测.观众奖励等等.新的频道将支持Theta奖励机制,Theta代币可在SLIVER

老男孩教育每日一题:2017年3月9日-请解释下面Shell脚本中if开头的整行代码的意思及应用场景吗?

请解释下面Shell脚本中 if开头的整行代码的意思,你见过它的应用场景么? if(kill -0 $pid 2>/dev/du11) then     echo"oldboy" else    echo"oldgirl" fi 面试题:请解释if (kill -0 $pid 2>/dev/null)代码的意思? if(kill -0 $pid 2>/dev/null)     then        echo "oldboy"

5行代码实现微信小程序图片上传与腾讯免费5G存储空间的使用

本文介绍了如何在微信小程序开发中使用腾讯官方提供的云开发功能快速实现图片的上传与存储,以及介绍云开发的 5G 存储空间的基本使用方法,这将大大提高微信小程序的开发效率,同时也是微信小程序系列教程的视频版更新的文字版本摘要. 此文为 「60 节实战课微信小程序开发视频教程」 的第 51 小节内容,如果需要查看视频版本的实战操作,请直接跳至文章的最后部分查看. 1.云开发图片空间简介 在之前的文章 微信小程序开发平台新功能「云开发」快速上手体验 中我们简要介绍了腾讯官方给所有的微信小程序开发提供的云

跟刷 《 Android Studio 单刷第一行代码》 记录坑

跟刷系列   Android Studio 单刷第一行代码 原帖地址http://www.cnblogs.com/DebugLife/p/4355687.html 记录自己的失误,也算是个督促自己了. 1. 坑--去除标题栏 在 Activity 的 onCreate()方法中添加 requestWindowFeature(Window.FEATURE_NO_TITLE);

【翻】Android Design Support Library 的 代码实验——几行代码,让你的 APP 变得花俏

译者地址:[翻]Android Design Support Library 的 代码实验--几行代码,让你的 APP 变得花俏 原文:Codelab for Android Design Support Library used in I/O Rewind Bangkok session--Make your app fancy with few lines of code 原文项目 demo: Lab-Android-DesignLibrary 双语对照地址: [翻-双语]Android D

《第一行代码》Android特色开发,基于位置服务,出现的问题

手机GPS定位较慢.精度高.耗电量多,网络定位较快.精度低.耗电量少 当位置精度要求非常高的时候,使用GPS定位:一般情况下,使用网络定位. 按<第一行代码>写了一个定位程序,真机一直没有定位信息输出,但是模拟器上有输出. 最后发现了问题,将手机上的定位模式改为移动网络定位,而不是GPS定位,定位信息会立刻显示出来. 是GPS定位较慢导致的. 还有一点,手机如果有链接WIFI,采用GPS定位可能显示不出来,最好使用数据网络(即手机自己的网)定位.

100行代码实现最简单的基于FFMPEG+SDL的视频播放器(SDL1.x)【转】

转自:http://blog.csdn.net/leixiaohua1020/article/details/8652605 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 简介 流程图 simplest_ffmpeg_player标准版代码 simplest_ffmpeg_player_suSU版代码 结果 FFMPEG相关学习资料 补充问题 ===================================================== 最简单的基于FFmp

程序员的复仇:11行代码如何让Node.js社区鸡飞狗跳

来源自:http://www.techug.com/node-js-community 几天前,一名 NPM(Node.js Package Manager)社区的贡献者 Azer Koçulu 出于对 NPM 管理层的怨愤,不声不响删除了自己在 NPM 上面的全部代码,其中就包含只有 11 行代码的“Left-pad”,没想到从中国北京到美国硅谷,从大学宿舍学习 Node.js 的新手到 Facebook 的资深工程师,整个互联网界都炸开了锅,他们手中的许多 Node.js 模块,全罢工了.