Hallo zusammen,
Ich habe ein kleines Programm zur Messdatenerfassung (via RS232) in
Python geschrieben. Als refferenz für die Messdaten will ich die
aktuellen Wetterdaten (von der Google Weather API) mitloggen.
Dies funtioniert zuhause auch sehr gut und zuverlässig. Leider sitze ich
aber in der Firma hinter einem Proxy und habe hier nur windowsXP als
platform.
Die Proxy configuration bekommt der Browser automatisch via "function
FindProxyForURL(url, host){"
Aus dem script habe ich mir den Proxy namen geschnappt und in mein
Python 2.7 Programm eingebaut (via urllib2).
Leider habe ich jetzt festgestellt, das die Abfrage der Google API nur
über das skript funktioniert, wenn auch der Internet Explorer geöffnet
ist, und auch regelmäßig seiten aufgerufen werden. Ist der Browser
geschlossen oder es werden für eine bestimte Zeit keine Webseiten
abgerufen, läuft mein code auch nicht mehr.
Hier der Python code-schnippsel:
1 | def getWeather(city):
|
2 | #create google weather api url
|
3 | url = "http://www.google.com/ig/api?weather="+str(city)
|
4 |
|
5 | proxy_handler = rllib2.ProxyHandler 'http': 'http://XXXXXXX.com:8080/'})
|
6 | proxy_auth_handler = urllib2.ProxyBasicAuthHandler()
|
7 | proxy_auth_handler.add_password('xxxxxxx', XXXXX.com', 'XXXXXXX', 'XXXXXXX')
|
8 |
|
9 | opener = urllib2.build_opener(proxy_handler, proxy_auth_handler)
|
10 |
|
11 | try:
|
12 | #open google weather api url
|
13 | f = opener.open(url)
|
14 | except:
|
15 | #if there is an error opening the url
|
16 | return "Error_opening_url"
|
17 |
|
18 | # read contents to string
|
19 | s = f.read()
|
20 | # extract weather condition data from xml string
|
21 | web_temp = s.split('<temp_c data="')[-1].split("\"")[0]
|
22 | web_humi = s.split('<humidity data="Humidity: ')[-1].split("\"")[0]
|
23 | web_cond = s.split('<current_conditions><condition data="')[-1].split("\"")[0]
|
24 |
|
25 | # if there was an error getting the condition
|
26 | if web_cond == "<?xml version=":
|
27 | return "XML_error"
|
28 |
|
29 | #return the weather condition
|
30 | return web_temp+';'+web_humi+';'+web_cond
|
eventuell hat einer von Euch eineIdee oder ein Tipp, leider kenne ich
mich mit Proxy und speziell mit der Windows-welt nicht besonders gut
aus.
vielen Dank für eure hilfe!
gruß
heinz