关于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下的部署相关推荐

  1. 寒冬袭来,带你使用Flask开发一款天气查询软件吧

    天气预报 获取天气预报数据,离不开中国天气网 http://www.weather.com.cn 天气预报网 登陆网站,在搜索栏中输入城市名称点击搜索,即可获取该地区的天气预报.比如我搜索西安,完成后 ...

  2. 查python的软件_[Python实战]Python制作天气查询软件

    以前,公众号分享了如何使用 PyQt5 制作猜数游戏和计时器,这一次,我们继续学习:如何使用 PyQt5 制作天气查询软件. 开发环境Python3 PyQt5 requests 准备工作 首先要获取 ...

  3. 查python的软件_Python制作天气查询软件【python实战必学】

    在这里插入图片描述 以前,公众号分享了如何使用 PyQt5 制作猜数游戏和计时器,这一次,我们继续学习:如何使用 PyQt5 制作天气查询软件. 如需获取源代码和 exe 文件,请在微信公众号Pyth ...

  4. python天气查询运行过程_菜鸟玩Python|制作天气查询软件

    原标题:菜鸟玩Python|制作天气查询软件 开发环境 Python3 PyQt5 requests 准备工作 首先要获取不同城市对应的天气代码,可以从 https://www.heweather.c ...

  5. “Rimon天气”Android天气查询软件项目总结

    "Rimon天气"是我在自学Android软件开发一段时间后,以郭霖写的<第一行代码>书中的天气查询软件"酷欧天气"为参考,改写的天气查询app.与 ...

  6. python制作查询工具发给别人使用_用Python制作天气查询软件

    这是小王推荐的第2篇好文 作者:flywind 程序介绍 先上图让大家感受一下 又来一波Python的骚操作,使用PyQt5和爬虫做一个天气查询软件,具体效果上图中很清楚的能够展示出来.UI使用PyQ ...

  7. 2020 零基础 Vue快速入门 教开发天气查询网页—天知道(激发编程乐趣)【整理+源码】

    文章目录 1.引言 2.天知道概述 3.模板展示 4.回车键查询功能开发 5.点击查询功能开发 6.js完整代码及接口 7.结束语 点击进入Vue❤学习专栏~ 1.引言 最近呢,也是在自学Vue中,通 ...

  8. Flask开发成语接龙游戏,闲来无事手机玩玩自己写的游戏吧!

    英语单词学习应用 周五发布的文章Flask开发天气查询软件,带你掌握pipenv的使用与手机Termux下的部署发布后,看到喜欢的人比较多.本来周末打算照着扇贝/极光单词,写一个英语单词自测工具.但苦 ...

  9. Flask开发成语接龙游戏,以后闲了手机玩玩自己写的游戏吧!

    明天你好,我叫干不倒 一直比较喜欢看<欢乐喜剧人>,其中有一期小沈龙的节目,名字叫明天你好,我叫干不倒... 父亲的身体一直不好,因为常年的酗酒抽烟,患脑梗好些年头了,周末病情有些恶化,住 ...

最新文章

  1. VS新建类自动添加版本注释
  2. python系统-Python(第八课,简单开发系统)
  3. DLL注入-APC注入
  4. Visual Studio 2019没有Setup安装项目(Microsoft Visual Studio Installer Projects)的官方解决方案
  5. Deseq的理论基础
  6. Winform中实现Excel导入、表格展示、多选获取值、生成二维码、打印流程(附代码下载)
  7. c++继承中的构造和析构
  8. kali操作系统SSH问题解决方案
  9. 8、TypeScript-解构赋值
  10. 和yupeng的讨论
  11. html5 云服务器搭建,云服务器CentOS系统搭建web服务
  12. C++ 偏微分数值计算库_ESYSim仿真器介绍之一 C++库介绍
  13. 网页编码utf8 gb2312 gbk的区别
  14. 计算机网上邻居怎么隐藏,Win7桌面不显示网上邻居图标方法 win7系统如何隐藏网上邻居图标...
  15. Android应用权限申请
  16. Unity(三)EasyTouch5的使用
  17. 还在用Navicat?这款开源的数据库管理工具界面更炫酷!
  18. 深度剖析apachepdf下载_软件定义汽车趋势下的供应链趋势(17页可下载)
  19. Pytorch 中的detach 和detach_
  20. 小游戏——扫雷(可以标记)

热门文章

  1. macbook配置java环境变量_如何安装Java和配置环境变量
  2. before css 旋转_CSS及购物车的制作练习
  3. android新闻客户端发展趋势,基于Android平台的新闻客户端设计与实现
  4. java登录功能多线程_java之多线程
  5. java memcached设置过期时间_Memcached的MemCachedClient设置过期时限
  6. 东风畅行java_东风畅行载货车为何可以口碑很好吗?是配置高?或者另有原因?...
  7. python3 一年中的天数 时间转化为北京时_Python3?环境搭建
  8. python简单命令语句_Python语言----linux常用命令(13)
  9. python3项目源代码下载_python3中文版下载
  10. akka java_java – Akka和Spring集成