zoukankan      html  css  js  c++  java
  • python技巧31[调用webservice]

    webservice提供方:

    http://www.webxml.com.cn/zh_cn/web_services.aspx

    天气预报webservice:

    http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx

    一 使用urllib + xml.dom.minidom通过http get的方式来使用webservice:

    例如上海的天气:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName?theCityName=58367

    httpget返回:

     <?xml version="1.0" encoding="utf-8" ?> 
    <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://WebXml.com.cn/">
      
    <string>直辖市</string> 
      
    <string>上海</string> 
      
    <string>58367</string> 
      
    <string>58367.jpg</string> 
      
    <string>2011-1-4 14:40:22</string> 
      
    <string>1℃/5℃</string> 
      
    <string>1月4日 晴转多云</string> 
      
    <string>北风4-5级转3-4级</string> 
      
    <string>0.gif</string> 
      
    <string>1.gif</string> 
      
    <string>今日天气实况:气温:4℃;风向/风力:东风 小于3级;湿度:41%;气压:1026.3hPa;空气质量:良;紫外线强度:弱</string> 
      
    <string>穿衣指数:天气冷,建议着棉衣、皮夹克加羊毛衫等冬季服装。年老体弱者宜着厚棉衣或冬大衣。感冒指数:天气寒冷,昼夜温差极大且风力较强,易发生感冒,请注意适当增减衣服,加强自我防护避免感冒。运动指数:天气较好,气温很高,请减少运动时间并降低运动强度,又因紫外线强且风力较大,户外运动避风防晒。洗车指数:较适宜洗车,未来持续两天无雨,但考虑风力较大,擦洗一新的汽车会蒙上灰尘。晾晒指数:天气晴朗,午后温暖的阳光仍能满足你驱潮消霉杀菌的晾晒需求。旅游指数:天气晴朗,万里无云,温度稍低,加之风稍大,让人感觉有点凉,会对外出有一定影响,外出注意防风保暖。路况指数:晴天,其它条件适宜,路面比较干燥,路况较好。舒适度指数:白天天气较凉,且风力较强,您会感觉偏冷,不很舒适,请注意添加衣物,以防感冒。</string> 
      
    <string>1℃/6℃</string> 
      
    <string>1月5日 多云转阴</string> 
      
    <string>北风3-4级转4-5级</string> 
      
    <string>1.gif</string> 
      
    <string>2.gif</string> 
      
    <string>0℃/5℃</string> 
      
    <string>1月6日 阴转多云</string> 
      
    <string>北风4-5级</string> 
      
    <string>2.gif</string> 
      
    <string>1.gif</string> 
      
    <string>上海简称:沪,位置:上海地处长江三角洲前缘,东濒东海,南临杭州湾,西接江苏,浙江两省,北界长江入海,正当我国南北岸线的中部,北纬31°14′,东经121°29′。面积:总面积7823.5平方公里。人口:人口1000多万。上海丰富的人文资源、迷人的城市风貌、繁华的商业街市和欢乐的节庆活动形成了独特的都市景观。游览上海,不仅能体验到大都市中西合壁、商儒交融、八方来风的氛围,而且能感受到这个城市人流熙攘、车水马龙、灯火璀璨的活力。上海在中国现代史上占有着十分重要的地位,她是中国gcd的诞生地。许多震动中外的历史事件在这里发生,留下了众多的革命遗迹,处处为您讲述着一个个使人永不忘怀的可歌可泣的故事,成为包含民俗的人文景观和纪念地。在上海,每到秋祭,纷至沓来的人们在这里祭祀先烈、缅怀革命历史,已成为了一种风俗。大上海在中国近代历史中,曾是风起云涌可歌可泣的地方。在这里荟萃多少风云人物,散落在上海各处的不同住宅建筑,由于其主人的非同寻常,蕴含了耐人寻味的历史意义。这里曾留下许多革命先烈的足迹。瞻仰孙中山、宋庆龄、鲁迅等故居,会使您产生抚今追昔的深沉遐思,这里还有无数个达官贵人的住宅,探访一下李鸿章、蒋介石等人的公馆,可以联想起主人那段显赫的发迹史。</string> 
      
    </ArrayOfString>

    代码:

    def TestUrlOpen():
      
    import urllib.request
      page 
    = urllib.request.urlopen("http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName?theCityName=58367")
      lines 
    = page.readlines()
      page.close()
      document 
    = ""
      
    for line in lines :
        document 
    = document + line.decode('utf-8')

      
    from xml.dom.minidom import parseString
      dom 
    =parseString(document)
      strings 
    = dom.getElementsByTagName("string")
      
    print (strings[6].childNodes[0].data + " " + strings[7].childNodes[0].data)

    输出如下:

    1月4日 晴转多云 北风4-5级转3-4级

    二 使用suds来使用webservice:

    https://fedorahosted.org/suds/ 

    suds web services client 是轻量级的基于soap的python web services client。

    suds安装:python31 setup.py install

    suds安装的错误:ImportError: No module named client

    代码:

    def TestSuds() :
      
    from suds import WebFault
      
    from suds.client import Client 
      url 
    = 'http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?WSDL'
      client 
    = Client(url)
      
    print (client)
      
    print (client.service.getWeather('58367'))

    三 其他的使用webservice的方式:

    http://pywebsvcs.sourceforge.net/ 

    参考:

    http://www.pyfun.com/shenru/201012/3060.html

    http://www.iyouf.info/parse-weather-with-python.html

    https://fedorahosted.org/suds/wiki/Documentation

    完!


    作者:iTech
    微信公众号: cicdops
    出处:http://itech.cnblogs.com/
    github:https://github.com/cicdops/cicdops

  • 相关阅读:
    [转]Docker学习笔记之一,搭建一个JAVA Tomcat运行环境
    ubuntu wifi连接出现Network service discovery disabled的解决办法
    使用java实现对称加密解密(AES),非对称加密解密(RSA)
    [转] mysql分区性能初探
    CyclicBarrier和CountDownLatch的使用
    oom 和 jvm crash的问题
    使用单元素枚举实现单例
    【转】mysql 计划事件
    用Linkedhashmap的LRU特性及SoftReference软引用构建二级缓存
    动态生成正则表达式
  • 原文地址:https://www.cnblogs.com/itech/p/1924966.html
Copyright © 2011-2022 走看看