模块调用中国天气网和qqOnline及TrainTimeWebService接口来突出Json方法

Posted pyrene

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模块调用中国天气网和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

 









以上是关于模块调用中国天气网和qqOnline及TrainTimeWebService接口来突出Json方法的主要内容,如果未能解决你的问题,请参考以下文章

天气预报代码调用

python爬虫-15-使用python爬取中国天气,然后将最低温排序进行绘图展示

怎么根据中国气象局提供的接口做一个自己的天气预报(.Net)

城市代码cityCode 表格,用于获取中国省市天气的api

城市代码cityCode 表格,用于获取中国省市天气的api

基于java高德天气的接口调用