Flask开发天气查询软件,带你掌握pipenv的使用与手机Termux下的部署
关于pipenv
昨天介绍了pipenv这个相比于virtualenv更高端大气上档次的虚拟环境管理软件,但看了下流量貌似不是很受欢迎,也许是我介绍的不够好吧。那么今天就拿它做一个例子,开发一款天气预报查询软件,然后打包部署到手机的Termux下。
天气预报
获取天气预报数据,离不开中国天气网
登陆网站,在搜索栏中输入城市名称点击搜索,即可获取该地区的天气预报。比如我搜索西安,完成后会跳转至下面的网址:
其他的都好说,但是这个地区编码怎么搞?F12看看网络请求….
爬虫思路
我们可以看到网站先通过get请求,访问urlhttp://toy1.weather.com.cn/search?cityname=%E8%A5%BF%E5%AE%89
并传参cityname,获取到城市编码,再进行了相关跳转。有些young man 会问这个cityname怎么是这种格式…其实很简单:
from urllib.parse import quote
quote('西安', encoding='utf-8')
'%E8%A5%BF%E5%AE%89'
知道了这些,我们就可以有针对性的获取每个城市最近7天的天气预报了,当然少不了一堆beautifulsoup的元素定位操作:
# 元素定位思路:
id=7d --> class='clearfix' -->ul --> findAll(li)
# 参数获取
h1标签为日期
class=wea 为天气
class=tem 为温度
爬虫代码
确定了这些内容,我们的爬虫代码基本就OK了,但这个不是今天的重点,所以简单看下吧:
# -*- coding: utf-8 -*-
# @Author : 王翔
# @JianShu : 清风Python
# @Date : 2019/7/19 1:56
# @Software : PyCharm
# @version :Python 3.7.3
# @File : weather.pyimport requests
from urllib.parse import quote
import re
from bs4 import BeautifulSoupclass WeatherReport:def __init__(self, city):self.quote_city = quote(city, encoding='utf-8')self.result_info = []def get_city_code(self):r = requests.get('http://toy1.weather.com.cn/search?cityname=%s' % self.quote_city)response = eval(r.text)[0].get('ref')try:return re.search('[0-9]+', response).group()except AttributeError:return Nonedef get_weather(self, code):r = requests.get('http://www.weather.com.cn/weather/%s.shtml' % code)r.encoding = 'utf-8'bs4 = BeautifulSoup(r.text, 'lxml')days = bs4.find('div', {'id': '7d'}).find('ul', {"class": "clearfix"}).findAll('li')for day in days:date = day.h1.textweather = day.find('p', {"class": "wea"}).texttmp = day.find('p', {"class": 'tem'}).text.strip()self.result_info.append("%s: %s %s" %(date,weather, tmp))return self.result_info
Web界面
有了后台的数据,我们前台实现也就比较简单了,只需要提供一个城市的输入框体和提交按钮,剩下就是城市天气的内容展示了。简单引入Bootstrap+jQuery即可完成,前台界面大概这样子,原谅屌丝的审美,哈哈…
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1 ,user-scalable=no"><title>清风python</title><link rel="icon" href="{{ url_for('static',filename='favicon.ico') }}"><link rel="stylesheet" href="{{ url_for('static',filename='css/bootstrap.min.css') }}"><link rel="stylesheet" href="{{ url_for('static',filename='css/main.css') }}"><script src="{{ url_for('static',filename='js/jquery.min.js') }}"></script>
</head>
<body><div class="container container-small"><div class="content"><div class="header">天气查询软件</div><div class="block-info"><div class="form-group has-success"><div class="input-group"><div class="input-group-addon">城市:</div><input id='name' class="form-control"/></div></div><div class="form-group "><button class="form-control btn-primary" id="load">查询</button></div><p class="result"></p><script type="text/javascript">$(function () {$('#load').click(function () {let city = $('#name').val();if (city.length > 0) {$.ajax({url: '/weather/' + city,type: 'get',success: function (data) {$('.result').html(data);}})} else {$('.result').html("请填写正确的城市名称...");}})})</script></div></div><div class="footer">©2019-欢迎关注我的公众号:<a href="https://www.jianshu.com/u/d23fd5012bed">清风Python</a></div>
</div></body>
</html>
Flask路由
Flask的路由比较简单,一个用来呈现首页,另外一个负责动态获取Ajax数据进行回传即可
from flask import Flask, render_template
from weather import WeatherReport as wrapp = Flask(__name__)@app.route('/')
def index():return render_template('index.html')@app.route('/weather/<city>')
def weather(city):main_func = wr(city)city_code = main_func.get_city_code()if city_code:info = main_func.get_weather(city_code)return '<br>'.join(info)else:return "城市名称无效,请核查..."
pipenv部署
代码我们已经开发完了,那么如何在手机上部署呢?让我们看看项目目录:
我将代码提交到github…
现在我们从手机上下载代码,进行安装…
# 如果为安装pipenv,需要先进行安装操作
pip instlal pipenv
# 克隆代码
git clone https://github.com/KingUranus/WeatherForecast.git
# 进入代码目录
cd WeatherForecast
# 安装虚拟机及依赖模块
pipenv install
# 进入虚拟机
pipenv shell
# 启动flask
flask run
从安装到使用,你无需关注虚拟环境到底涉及什么模块,需要怎么安装,没错pipenv就是这么简单粗暴+无脑!放几张图吧:
别说,安装的这个小蛇还挺可爱的….
最终看看手机运行是否正常吧:
通过今天的练习,你们是否对pipenv有更深的理解了?简单方便又好用,是我对它中肯的评价,哈哈….
The End
明后两天,作为周末进行作息的调整,再学一些本人更关注的内容,就不更新了,提前祝大家周末快乐…
今天的内容就到这里,如果觉得内容对你有所帮助,欢迎点击文章右下角的在看
。
期待你关注我的公众号清风Python
,如果觉得不错,希望能动动手指转发给你身边的朋友们。
作者:清风Python
Flask开发天气查询软件,带你掌握pipenv的使用与手机Termux下的部署相关推荐
- 寒冬袭来,带你使用Flask开发一款天气查询软件吧
天气预报 获取天气预报数据,离不开中国天气网 http://www.weather.com.cn 天气预报网 登陆网站,在搜索栏中输入城市名称点击搜索,即可获取该地区的天气预报.比如我搜索西安,完成后 ...
- 查python的软件_[Python实战]Python制作天气查询软件
以前,公众号分享了如何使用 PyQt5 制作猜数游戏和计时器,这一次,我们继续学习:如何使用 PyQt5 制作天气查询软件. 开发环境Python3 PyQt5 requests 准备工作 首先要获取 ...
- 查python的软件_Python制作天气查询软件【python实战必学】
在这里插入图片描述 以前,公众号分享了如何使用 PyQt5 制作猜数游戏和计时器,这一次,我们继续学习:如何使用 PyQt5 制作天气查询软件. 如需获取源代码和 exe 文件,请在微信公众号Pyth ...
- python天气查询运行过程_菜鸟玩Python|制作天气查询软件
原标题:菜鸟玩Python|制作天气查询软件 开发环境 Python3 PyQt5 requests 准备工作 首先要获取不同城市对应的天气代码,可以从 https://www.heweather.c ...
- “Rimon天气”Android天气查询软件项目总结
"Rimon天气"是我在自学Android软件开发一段时间后,以郭霖写的<第一行代码>书中的天气查询软件"酷欧天气"为参考,改写的天气查询app.与 ...
- python制作查询工具发给别人使用_用Python制作天气查询软件
这是小王推荐的第2篇好文 作者:flywind 程序介绍 先上图让大家感受一下 又来一波Python的骚操作,使用PyQt5和爬虫做一个天气查询软件,具体效果上图中很清楚的能够展示出来.UI使用PyQ ...
- 2020 零基础 Vue快速入门 教开发天气查询网页—天知道(激发编程乐趣)【整理+源码】
文章目录 1.引言 2.天知道概述 3.模板展示 4.回车键查询功能开发 5.点击查询功能开发 6.js完整代码及接口 7.结束语 点击进入Vue❤学习专栏~ 1.引言 最近呢,也是在自学Vue中,通 ...
- Flask开发成语接龙游戏,闲来无事手机玩玩自己写的游戏吧!
英语单词学习应用 周五发布的文章Flask开发天气查询软件,带你掌握pipenv的使用与手机Termux下的部署发布后,看到喜欢的人比较多.本来周末打算照着扇贝/极光单词,写一个英语单词自测工具.但苦 ...
- Flask开发成语接龙游戏,以后闲了手机玩玩自己写的游戏吧!
明天你好,我叫干不倒 一直比较喜欢看<欢乐喜剧人>,其中有一期小沈龙的节目,名字叫明天你好,我叫干不倒... 父亲的身体一直不好,因为常年的酗酒抽烟,患脑梗好些年头了,周末病情有些恶化,住 ...
最新文章
- VS新建类自动添加版本注释
- python系统-Python(第八课,简单开发系统)
- DLL注入-APC注入
- Visual Studio 2019没有Setup安装项目(Microsoft Visual Studio Installer Projects)的官方解决方案
- Deseq的理论基础
- Winform中实现Excel导入、表格展示、多选获取值、生成二维码、打印流程(附代码下载)
- c++继承中的构造和析构
- kali操作系统SSH问题解决方案
- 8、TypeScript-解构赋值
- 和yupeng的讨论
- html5 云服务器搭建,云服务器CentOS系统搭建web服务
- C++ 偏微分数值计算库_ESYSim仿真器介绍之一 C++库介绍
- 网页编码utf8 gb2312 gbk的区别
- 计算机网上邻居怎么隐藏,Win7桌面不显示网上邻居图标方法 win7系统如何隐藏网上邻居图标...
- Android应用权限申请
- Unity(三)EasyTouch5的使用
- 还在用Navicat?这款开源的数据库管理工具界面更炫酷!
- 深度剖析apachepdf下载_软件定义汽车趋势下的供应链趋势(17页可下载)
- Pytorch 中的detach 和detach_
- 小游戏——扫雷(可以标记)
热门文章
- macbook配置java环境变量_如何安装Java和配置环境变量
- before css 旋转_CSS及购物车的制作练习
- android新闻客户端发展趋势,基于Android平台的新闻客户端设计与实现
- java登录功能多线程_java之多线程
- java memcached设置过期时间_Memcached的MemCachedClient设置过期时限
- 东风畅行java_东风畅行载货车为何可以口碑很好吗?是配置高?或者另有原因?...
- python3 一年中的天数 时间转化为北京时_Python3?环境搭建
- python简单命令语句_Python语言----linux常用命令(13)
- python3项目源代码下载_python3中文版下载
- akka java_java – Akka和Spring集成