Below is an example of accessing a weather service and obtaining the prediction based on a ZIP code. This example was created by Ivan Dane.
def XMLparser (TheXML):
Key1=""
Key2=" "
Key3 = ""
Key4 = " "
Key5 = ""
Key6 = " "
LengthOfKey1 = len(Key1)
LengthOfKey2 = len(Key2)
LengthOfKey3 = len(Key3)
LengthOfKey4 = len(Key4)
LengthOfKey5 = len(Key5)
LengthOfKey6 = len(Key6)
StartIndex = 0 #Initialize StartIndex so we go into the loop the first time
WeatherIndex = 0
TempIndex = 0
try:
while (StartIndex!=-1):
StartIndex=TheXML.find(Key1,StartIndex) # Find the start of the coordinate tag
if (StartIndex!=-1): # Only extract the coordinate if one was found
EndIndex=TheXML.find(Key2,StartIndex+LengthOfKey1) # Get the end of the coordinate tag
CityValue=TheXML[StartIndex+LengthOfKey1:EndIndex] # Extract the coordinate from between the 'pos' tags
StartIndex=EndIndex+LengthOfKey2 # Move StartIndex to be after the end key to find the next entry
WeatherIndex = TheXML.find(Key3, StartIndex) #Identifies character position of the tide height value tag
EndWeatherIndex = TheXML.find(Key4,WeatherIndex+LengthOfKey4) #Identifies
WeatherValue = TheXML[WeatherIndex+LengthOfKey3:EndWeatherIndex] #Extracts tide height value from between value tags
StartIndex=EndWeatherIndex+LengthOfKey4 # Move StartIndex to be after the end key to find the next entry
TempIndex = TheXML.find(Key5, StartIndex) #Identifies character position of the tide height value tag
if (TempIndex<>-1):
EndTempIndex = TheXML.find(Key6,WeatherIndex+LengthOfKey4) #Identifies
TempValue = TheXML[TempIndex+LengthOfKey5:EndTempIndex] #Extracts
else:
TempValue = "N/A"
DataString = CityValue + "," + WeatherValue + "," + TempValue
print(CityValue + "," + WeatherValue) #compiles the Lat, Long, and tide value into CSV format and writes it to the CSV file
return(DataString) #TheOutputFile.write(DataString) #Writes the fdata to the file
except:
DataString = "N/A" + "," + "N/A" + "," + "N/A"
return(DataString)
##########################################################
import urllib2 # Include the URL library
TheOutputFile = open("C:/temp/WeatherByZip.csv","w")
ZIP = '95501' #manually enter zip code here
TheService=urllib2.urlopen('http://wsf.cdyne.com/weatherws/Weather.asmx/GetCityWeatherByZIP?ZIP=' + ZIP) # Open the URL
TheHTML=TheService.read()
DataValues = XMLparser (TheHTML)
TheOutputFile.write("City" + "," + "Weather" + "," + "Temperature" +"\n") #Writes the file headers to the CSV file
TheOutputFile.write(DataValues) #Writes the file headers to the CSV file
TheOutputFile.close()
© Copyright 2018 HSU - All rights reserved.