第十二、模块二、调用中国天气网和qqOnline及TrainTimeWebService接口来突出Json方法
一、
浏览网页的时候,发送的请求。服务器反回来的永远是字符串,由于服务器后台使用的语言不通,所以就需要用工具反解,这里用到了json
json方法一
json.loads()将字符串转化为python的基本数据类型(内部必须是双引号)
中国天气网城市代码网络接口来
代码实现:
1 req = urllib.request.Request("http://www.weather.com.cn/adat/sk/101010300.html") 2 r = urllib.request.urlopen(req) 3 result = str(r.read(),encoding="utf-8") 4 print(result,type(result)) 5 6 dic = json.loads(result) 7 print(dic,type(dic)) 8 打印输出如下: 9 10 {"weatherinfo":{"city":"朝阳","cityid":"101010300","temp":"9","WD":"西南风","WS":"2级","SD":"22%","WSE":"2","time":"10:25","isRadar":"1","Radar":"JC_RADAR_AZ9010_JB","njd":"暂无实况","qy":"1013"}} <class 'str'> 11 {'weatherinfo': {'city': '朝阳', 'cityid': '101010300', 'temp': '9', 'WD': '西南风', 'WS': '2级', 'SD':
'22%', 'WSE': '2', 'time': '10:25', 'isRadar': '1', 'Radar': 'JC_RADAR_AZ9010_JB', 'njd': '暂无实况', '
qy': '1013'}} <class 'dict'>
json.dumps()将python的基本数据类型转换成字符串
1 user_list = ["eric","tony"] 2 r = json.dumps(user_list) 3 print(s,type(r))
打印输出如下:
{"desc":"invilad-citykey","status":"1002"} <class 'str'>
还有两个方法:
json.load()
json.dump()
1 #下面不经常用 2 #1、下面作用先把dic转化为字符串,2、然后创建db文件,并且把内容写到里面 3 dic = {'k1':12,'k2':2} 4 json.dump(dic,open('db','w')) 5 上面只要执行就会自动创建db文件
6 #1、先读db中的内容,2、将字符串转化为字典 7 r = json.load(open("db","r")) 8 print(r,type(r))
json只能反解一些通用的,如果只是python特有的,那么就反解不了了
二、第三方模块的安装
第三方模块的安装
第三方模块的安装
1) 安装 利用软件管理工具 pip3
安装pip3,依赖setuptools
把pip3安装到环境变量里面,之后如果想安装其他模块在终端输出pip3 install 第三方模块
2) 源码安装
1、 下载源码包,安装、解压、进入目录找到setup.py
2、 打开终端进入setup目录中
3、 执行setup.py install
三、requests初式
1)安装pip3,python3中在scripts包里面包含所以,只需要把包含scropts文件包的路径安装在当前用户下的环境变量里面,之后打开cmd 直接pip3 install requests
x=requests.get(url)获取返回值
x.text 获取返回的内容
import requests response = requests.get("http://www.weather.com.cn/adat/sk/101010300.html") response.encoding= "utf-8" #调整乱码 result = response.text #.text:获取返回的内容 print(result)
四、XML初试
1、腾讯qqOnline接口
http://www.webxml.com.cn//webservices/qqOnlineWebService.asmx/qqCheckOnline?qqCode=3110436742
import requests #使用第三方模块requests发送HTTP请求,或者XML格式内容 r = requests.get("http://www.webxml.com.cn//webservices/qqOnlineWebService.asmx/qqCheckOnline?qqCode=3110436742") result = r.text #字符串类型 from xml.etree import ElementTree as ET #解析XML格式内容 #XML接收一个参数;字符串,格式化为特殊的对象 node = ET.XML(result) #json.loads(result) #获取内容 if node.text == "Y": print("在线") else: print("离线") 打印出: 在线
列车服务接口
http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx
#!/usr/bin/env python # -*- coding:utf-8 -*- import urllib import requests from xml.etree import ElementTree as ET # 使用内置模块urllib发送HTTP请求,或者XML格式内容 """ f = urllib.request.urlopen('http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx/getDetailInfoByTrainCode?TrainCode=G666&UserID=') result = f.read().decode('utf-8') """ # 使用第三方模块requests发送HTTP请求,或者XML格式内容 r = requests.get('http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx/getDetailInfoByTrainCode?TrainCode=k234&UserID=') result = r.text # 解析XML格式内容 root = ET.XML(result) #iter代表迭代 for node in root.iter("TrainDetailInfo"): print(node.find("TrainStation").text,node.find("StartTime").text) # for node in root.iter('TrainDetailInfo'): # print(node.find('TrainStation').text,node.find('StartTime').text,node.tag,node.attrib) # #node.attrib是打印出TrainDetailInfo 后面属性的字典的形式
打印输出: E:/project/untitled3/python/模块/xml模块/列车时刻表.py 上海(车次:K234\K235) 11:12:00 昆山 11:50:00 苏州 12:18:00 南京 15:15:00 蚌埠 18:03:00 徐州 20:25:00 砀山 21:27:00 商丘 22:16:00 宁陵县 22:48:00 兰考 23:24:00 开封 23:59:00 郑州 01:15:00 安阳 03:41:00 邯郸 04:34:00 邢台 05:09:00 石家庄 None
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 分享一个我遇到过的“量子力学”级别的BUG。
· AI Agent爆火后,MCP协议为什么如此重要!
· Draw.io:你可能不知道的「白嫖级」图表绘制神器
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· Java使用多线程处理未知任务数方案