zoukankan      html  css  js  c++  java
  • 第十二、模块二、调用中国天气网和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 上海(车次:K234K235) 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
  • 相关阅读:
    .NET XmlNavigator with Namespace
    编程要素
    【FOJ】1962 新击鼓传花游戏
    【POJ】1389 Area of Simple Polygons
    【POJ】2482 Stars in Your Window
    【HDU】3265 Posters
    【HDU】1199 Color the Ball
    【HDU】3642 Get The Treasury
    【HDU】4027 Can you answer these queries?
    【HDU】1542 Atlantis
  • 原文地址:https://www.cnblogs.com/pyrene/p/6418169.html
Copyright © 2011-2022 走看看