热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

查询天气python3可识别输入城市

importurllib.requestimportrefromurllib.requestimportquoteimportastdefurlopen(url):requrlli

import urllib.request
import re
from urllib.request import quote
import ast
def urlopen(url): req = urllib.request.Request(url)
req.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36")
html = urllib.request.urlopen(req)
html = html.read()
return html
#urlopen 打开链接 并加了heaaders
def nam():
print('请输入城市名字, 比如是深圳市,就只需要输入‘深圳’')
name = input('请输入城市名:')
name = quote(name)
#这里是中文要转成链接代码用 from urllib.request import quote 用这个函数name = quote(name) 就可以了才不会报错
url = 'http://toy1.weather.com.cn/search?cityname={}'.format(name)
#这个是查询接口加上城市名
htm = urlopen(url)
#返回的数据里面会有城市的代码
htm = htm.decode('utf-8')
return htm
#这里返回的是一个字符串 里面有很多
def dia(): daima = nam()
while daima == '([])':
#这个循环是为了判断输入的城市是否正确,比如输入‘城市’ 中国没这个名字的城市就会让你重新输入并且无限循环 直到正确
daima = nam()
#这就是如果输错了就会运行这一行代码并且重新把数据传回daima这个变量,再一次循环对比 如果==([])就说明写错了 需要再输入,如果对了就会进入下一个步骤

daima = re.search(r'("ref":")(\d*?)(~)',daima)
#数据正确就用正则表达式提取需要的城市代码
daima = daima.group(2)
#group(2)这个就是我们需要的 取出来是str类型的 可以直接用
return daima
#然后返回这个城市代码
def cha(dianma):
#现在我们得到代码加入到链接里面就可以访问了
url1 = 'http://www.weather.com.cn/data/sk/{}.html'.format(daima)
data = urlopen(url1)
data = data.decode('utf-8')
datadic = ast.literal_eval(data)
#返回的数据是一个字符串 要转成字典方便取数据
chen = datadic['weatherinfo']['city']
wendu = datadic['weatherinfo']['temp']
feng = datadic['weatherinfo']['WD']
shidu = datadic['weatherinfo']['SD']
time = datadic['weatherinfo']['time']
#这里面就是数据了 可以直接取出来 然后输入
print('城市:'+chen+'\n')
print('温度'+wendu+'\n')
print('风向'+feng+'\n')
print('湿度'+shidu+'\n')
print('时间'+time+'\n')
#输入的数据
daima = dia()
cha(daima)

推荐阅读
  • 利用Selenium与ChromeDriver实现豆瓣网页全屏截图
    本文介绍了一种使用Selenium和ChromeDriver结合Python代码,轻松实现对豆瓣网站进行完整页面截图的方法。该方法不仅简单易行,而且解决了新版Selenium不再支持PhantomJS的问题。 ... [详细]
  • 本文探讨了为何相同的HTTP请求在两台不同操作系统(Windows与Ubuntu)的机器上会分别返回200 OK和429 Too Many Requests的状态码。我们将分析代码、环境差异及可能的影响因素。 ... [详细]
  • Python + Pytest 接口自动化测试中 Token 关联登录的实现方法
    本文将深入探讨 Python 和 Pytest 在接口自动化测试中如何实现 Token 关联登录,内容详尽、逻辑清晰,旨在帮助读者掌握这一关键技能。 ... [详细]
  • 本文详细介绍了 Python 中的条件语句和循环结构。主要内容包括:1. 分支语句(if...elif...else);2. 循环语句(for, while 及嵌套循环);3. 控制循环的语句(break, continue, else)。通过具体示例,帮助读者更好地理解和应用这些语句。 ... [详细]
  • 本文详细介绍了钩子(hook)的概念、原理及其在编程中的实际应用。通过对比回调函数和注册函数,解释了钩子的工作机制,并提供了具体的Python示例代码,帮助读者更好地理解和掌握这一重要编程工具。 ... [详细]
  • 如何清除Chrome浏览器地址栏的特定历史记录
    在使用Chrome浏览器时,你可能会发现地址栏保存了大量浏览记录。有时你可能希望删除某些特定的历史记录而不影响其他数据。本文将详细介绍如何单独删除地址栏中的特定记录以及批量清除所有历史记录的方法。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 本文介绍如何使用 Angular 6 的 HttpClient 模块来获取 HTTP 响应头,包括代码示例和常见问题的解决方案。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 本文将探讨2015年RCTF竞赛中的一道PWN题目——shaxian,重点分析其利用Fastbin和堆溢出的技巧。通过详细解析代码流程和漏洞利用过程,帮助读者理解此类题目的破解方法。 ... [详细]
  • 在尝试使用C# Windows Forms客户端通过SignalR连接到ASP.NET服务器时,遇到了内部服务器错误(500)。本文将详细探讨问题的原因及解决方案。 ... [详细]
  • 本文详细介绍了如何下载并安装 Python,包括选择合适的版本、执行安装程序以及设置环境变量的步骤。此外,还提供了测试安装是否成功的简单方法。 ... [详细]
  • Python技巧:利用Cookie实现自动登录绕过验证码
    本文详细介绍了如何通过Python和Selenium库利用浏览器Cookie实现自动登录,从而绕过验证码验证。文章提供了具体的操作步骤,并附有代码示例,帮助读者理解和实践。 ... [详细]
  • Symfony是一个功能强大的PHP框架,以其依赖注入(DI)特性著称。许多流行的PHP框架如Drupal和Laravel的核心组件都基于Symfony构建。本文将详细介绍Symfony的安装方法及其基本使用。 ... [详细]
  • 本文介绍了 Python 的 Pmagick 库中用于图像处理的木炭滤镜方法,探讨其功能和用法,并通过实例演示如何应用该方法。 ... [详细]
author-avatar
蓝色水气球_453
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有