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

作者:小清华的小哥哥 时间:2022-05-14 00:38:41 

情人节刚过去几天,但是这和我们程序员有什么关系呢,对我们来说,万物皆对象。但是啊,小编为了讨得仰慕已久的女神的欢心(真香),便用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行代码实现免费发送手机短信

来源:https://blog.csdn.net/qq_41320433/article/details/104403102

标签:python,天气预报,每日鸡汤,推送
0
投稿

猜你喜欢

  • 关于Python中的同步异步阻塞与非阻塞

    2021-09-03 05:54:01
  • antd项目实现彩蛋效果的详细代码

    2023-09-14 12:51:20
  • 跟老齐学Python之编写类之一创建实例

    2021-05-06 21:16:56
  • 详解Python的Django框架中的templates设置

    2021-12-15 15:16:06
  • Python实现Word的读写改操作

    2022-08-11 13:42:48
  • 基于php无限分类的深入理解

    2023-11-15 04:07:39
  • python版本单链表实现代码

    2022-12-06 16:49:26
  • python利用socketserver实现并发套接字功能

    2021-01-28 16:36:45
  • 恢复master..xp_logattach(log explorer)

    2010-07-01 19:19:00
  • php初始化对象和析构函数的简单实例

    2023-11-09 18:11:14
  • python中字符串的编码与解码详析

    2022-11-15 23:24:12
  • Python之Numpy的超实用基础详细教程

    2021-12-05 19:06:23
  • Golang三个编译基本命令的使用小结

    2023-08-28 05:08:03
  • asp中提示至少一个参数没有被指定值 解决方法

    2013-06-01 20:14:00
  • Python中函数参数匹配模型详解

    2022-01-01 20:39:59
  • Mysql中explain的使用详解

    2009-12-08 16:18:00
  • python实现的系统实用log类实例

    2022-08-02 18:50:57
  • Oracle 低权限数据库账户得到 OS 访问权限 提权利用

    2009-06-19 17:27:00
  • 匿名函数的写法

    2010-01-06 13:32:00
  • Python中isnumeric()方法的使用简介

    2023-05-23 19:25:23
  • asp之家 网络编程 m.aspxhome.com