查到一个可以提供区域天气预报的url,说明文档在https://www.sojson.com/blog/234.html,

https://www.sojson.com/open/api/weather/json.shtml?city=%E6%88%90%E9%83%BD打算用python从上面获取预报信息,打印下来代码如下:
'''
想要学习Python?Python学习交流群:1136201545满足你的需求,资料都已经上传群文件,可以自行下载!
'''
import urllib.request
import time
import ssl
import json
# #weather = "https://www.baidu.com"
time.sleep(3)    #此处等待3秒主要是对应网页提示,三秒内只能访问一次
ssl._create_default_https_context = ssl._create_unverified_context
url = r"https://www.sojson.com/open/api/weather/json.shtml?city=%E6%88%90%E9%83%BD"#一个提供区域天气预报的urlpage = urllib.request.urlopen(url)
# # ssl._create_default_https_context=ssl._create_unverified_context
html = page.read().decode("utf-8")'''json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串)(1)json.dumps()函数是将一个Python数据类型列表进行json格式的编码(可以这么理解,json.dumps()函数是将字典转化为字符串)(2)json.loads()函数是将json格式数据转换为字典(可以这么理解,json.loads()函数是将字符串转化为字典)
'''res = json.loads(html)
a = json.dumps(res, ensure_ascii=False, indent=4)          #将读取到的内容格式化,这样就可以看到有缩进、换行的内容
# print(a)
fp = open(r"C:\Users\xxx\Documents\weather.txt", "w",encoding='UTF-8') #将读取内容保存到文件
fp.write(a) #写入数据
fp.close() #关闭文件res = json.loads(a) #将json转化为dict
# print(res)'''
通过查看抓到的代码,发现dict中嵌套了dict,所以需要把对应的dict取出来
同样,forecast中,在list里嵌套了dict,需要仔细查看并设置中间变量
'''
today = res['data']
yesterday = today['yesterday']
forcast = today['forecast']
tomorrow = forcast[0]      #注意看res文件内容,forecast其实是一个list,其元素才是dictprint("\n\n")
print("===============今日天气===============")
print("日期:       ",res['date'])
print("城市:       ",res['city'])
print("温度:       ",today['wendu'])
print("湿度:       ",today['shidu'])
print("PM2.5:     ",today['pm25'])
print("空气质量:    ",today['quality'])print("\n\n")
print("===============昨日天气===============")
print("日期:          ",yesterday['date'])
print("城市:          ",res['city'])
print("最高温度:       ",yesterday['high'])
print("最低温度:       ",yesterday['low'])
print("天气状况:       ",yesterday['type'])
# print("PM2.5:     ",today['pm25'])
# print("空气质量:    ",today['quality'])print("\n\n")
print("===============明日预报===============")
print("日期:          ",tomorrow['date'])
print("城市:          ",res['city'])
print("最高温度:       ",tomorrow['high'])
print("最低温度:       ",tomorrow['low'])
print("天气状况:       ",tomorrow['type'])
print("温馨提醒:       ",tomorrow['notice'])
# print("PM2.5:     ",today['pm25'])
# print("空气质量:    ",today['quality'])'''
下面是文件中的全部内容,主要是分清楚dict和list的层次,设置好中间变量,取出对应元素
{"date": "20180426","message": "Success !","status": 200,"city": "成都","count": 627,"data": {"shidu": "77%","pm25": 19.0,"pm10": 40.0,"quality": "优","wendu": "17","ganmao": "各类人群可自由活动","yesterday": {"date": "25日星期三","sunrise": "06:28","high": "高温 22.0℃","low": "低温 14.0℃","sunset": "19:37","aqi": 34.0,"fx": "无持续风向","fl": "<3级","type": "阴","notice": "不要被阴云遮挡住好心情"},"forecast": [{"date": "26日星期四","sunrise": "06:27","high": "高温 25.0℃","low": "低温 15.0℃","sunset": "19:38","aqi": 51.0,"fx": "无持续风向","fl": "<3级","type": "多云","notice": "阴晴之间,谨防紫外线侵扰"},{"date": "27日星期五","sunrise": "06:26","high": "高温 27.0℃","low": "低温 16.0℃","sunset": "19:39","aqi": 79.0,"fx": "无持续风向","fl": "<3级","type": "多云","notice": "阴晴之间,谨防紫外线侵扰"},{"date": "28日星期六","sunrise": "06:25","high": "高温 26.0℃","low": "低温 17.0℃","sunset": "19:39","aqi": 79.0,"fx": "无持续风向","fl": "<3级","type": "多云","notice": "阴晴之间,谨防紫外线侵扰"},{"date": "29日星期日","sunrise": "06:24","high": "高温 27.0℃","low": "低温 18.0℃","sunset": "19:40","aqi": 71.0,"fx": "无持续风向","fl": "<3级","type": "多云","notice": "阴晴之间,谨防紫外线侵扰"},{"date": "30日星期一","sunrise": "06:23","high": "高温 25.0℃","low": "低温 17.0℃","sunset": "19:41","aqi": 66.0,"fx": "无持续风向","fl": "<3级","type": "小雨","notice": "雨虽小,注意保暖别感冒"}]}
}'''

主要思路是:

1,先从url获取信息;

2,将信息格式化,转换为dict;

3,从dict中取出对应的项

注意网络连接,目标网址会识别同一IP的访问频率,三秒以内只允许一次

关键步骤是,从url获取信息后,得到的内容是没有换行和缩进的,即非格式化数据,所以需要使用json.dumps和json.loads将数据格式化

备注:

json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串)

(1)json.dumps()函数是将一个Python数据类型列表进行json格式的编码(可以这么理解,json.dumps()函数是将字典转化为字符串

(2)json.loads()函数是将json格式数据转换为字典(可以这么理解,json.loads()函数是将字符串转化为字典)

python3获取网页天气预报信息并打印相关推荐

  1. php的header_php获取网页header信息的4种方法

    php获取网页header信息的方法多种多样,就php语言来说,我知道的方法有4种, 下面逐一献上. 方法一:使用get_headers()函数 推荐指数: ★★★★★ get_header方法最简单 ...

  2. 使用 Python3 获取网页源代码

    爬虫的数据爬取量非常大,显然不可能对每个页面都手动复制源代码,因此就有必要使用自动化的方式来获取网页源代码.requests是Python的一个第三方HTTP(Hypertext Transfer P ...

  3. 爬取网页时自动获取网页编码信息,并对特殊的乱码页面(压缩过的网页内容)用gzip进行解码。...

    gzip的命名空间引用如下:using System.IO.Compression; 获取网页编码和信息 /// <summary>         /// create time 201 ...

  4. python request post 数组_[pve][python]用python3获取pve状态信息

    手头的Proxmox VE集群和节点越来越多,需要考虑统一管理了,先定一个小目标--集中状态监控. 以前写过检测ceph并用钉钉报警的bash脚本,这次换上洋气的方式,用python来通过pve的ap ...

  5. querylist 入门query部署,获取网页的信息。

    1, 以thinkphp3.2  为例子,在thinkphp/libriy/创建一个目录 QL/  装入.qeurylist.php   和, queruseylist.class.php 2,在co ...

  6. Java实现网络爬虫 案例代码1:获取天气预报信息

    案例1:获取天气预报信息 需求说明 搭建开发环境,实现从"hao123.com"中获取当地天气预报信息,从控制台输出结果 分析 访问网址:https://www.hao123.co ...

  7. 用TCP/UDP 网络调试助手(PC版)无法获取网页信息

    以前的网页均是http开头的,是没有加密的,以前用GET就能获取网页的信息,但是现在的基本是https开头的,是加密的,所以现在用以前的方法,只能返回301错误 现在想要用网络调试助手(PC版)来获取 ...

  8. python获取网页数据对电脑性能_【Python】网页数据爬取实战

    由于网页结构跟之前有变化,还不是很熟悉.代码待完善,问题记录: 腾讯新闻二级网页内容爬取有问题. 链家网站头文件没有用到. 爬取一条腾讯视频的header内容,存入txt.要求: 包含网页链接 包含t ...

  9. 利用API实现获取城市的天气预报信息和给指定手机号码发送验证码——基于Java

    文章目录 一.认识网址 二.获取城市的天气预报信息 三.给指定手机号码发送验证码 四.实现自定义短信内容的短信验证码发送 五.小结 六.参考资料 一.认识网址 网址的组成:协议://域名:端口号/虚拟 ...

最新文章

  1. SAP PP C201使用ECR创建Recipe主数据
  2. Python基础知识(五)--数据类型
  3. Python 字典类型的使用
  4. 特别完善的面试知识总结
  5. linux关路由器,安全关闭 Linux 的方式
  6. wxWidgets:wxDataViewEvent类用法
  7. UVA 512 Spreadsheet Tracking
  8. 一个人开始废掉的3种迹象
  9. JadClipse eclipse反编译插件
  10. SEOer将灭绝,尽快辅佐“百毒”对手
  11. Java 并发(JUC 包-02)
  12. Python 数据科学入门教程:机器学习:回归
  13. 嵌入式系统开发学习步骤(Linux高级编程学习顺序)
  14. Linux中last的用法及参数,查看登陆系统用户的信息
  15. iOS常用第三方类库 Xcode插件
  16. mongodb 如何更改端口号_Python 操作 MongoDB 数据库介绍
  17. install4j Enterprise Edition序列号
  18. BAT、360、网易等大公司开源项目
  19. 支付行业PCI DSS 3.0学习概述
  20. ios 穿山甲广告联盟集成_GitHub - ducaiwei/Pangolin: Flutter 广告SDK-字节跳动-穿山甲 集成...

热门文章

  1. zdm各命令的功能和作用_利用ZDM菜单管线设计工具绘制管线步骤
  2. 控制研究的混杂因素(Confounder)
  3. 基于微信小程序的游泳馆管理系统设计与实现-计算机毕业设计源码+LW文档
  4. PanDownload作者被抓,为何大家都对百度网盘如此气愤?
  5. Vue组件选项props
  6. 什么是mmc和emmc(mmcblkxxx、sdxx的关系)
  7. 【17】C语言 | 函数递归题
  8. 【历史上的今天】9 月 5 日:Scala 之父出生;华为发布麒麟 980 芯片;计算机存储器的革命
  9. 使用VS编写C语言程序遇到的scanf错误
  10. DM36X UBL UBoot