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
完!