Seite 1 von 2

Importieren von Daten aus dem Internet

Verfasst: Samstag 3. Januar 2009, 12:15
von Boldi
Ich brauche ein paar Ratschläge/Tipps wie man von speziellen Internetseiten bestimmte Werte ablesen kann, die dann in einem Programm verwendet werden können.

z.B. möchte ich die Höchst- und Tiefsttemperatur für den heutigen Tag von der Website http://www.wetteronline.de/Thueringen/Erfurt.htm ablesen und in einem Programm ausgeben lassen.

Wie geht das? Ich wäre über jeden hilfreichen Link und Ratschlag erfreut.

Verfasst: Samstag 3. Januar 2009, 12:20
von Birne94
nja. du öffnest die seite mir urlopen

Code: Alles auswählen

f = urlopen("url")
und ermittelst dann per RegEx die gewünschten Daten...

Verfasst: Samstag 3. Januar 2009, 12:47
von Leonidas
Besser noch: mit einem entsprechenden Parser wie lxml.html. Die nutzung von Mechanize hat sich auch bewährt. Ich sollte mal zu dem Thema einen FAQ-Eintrag schreiben, das wird hier ständig gefragt.

Verfasst: Samstag 3. Januar 2009, 14:33
von Boldi
Sorry, aber könntet ihr eventuell mir einen Link schicken wo das ausführlicher erklärt wird.

Verfasst: Samstag 3. Januar 2009, 15:11
von cofi

Verfasst: Samstag 3. Januar 2009, 18:09
von Boldi
danke dafür. gibt es kein deutsches tutorial?

Verfasst: Samstag 3. Januar 2009, 18:16
von Leonidas
Nein. Die Hardwarevorraussetungen an Programmierer sind "Kann feststellen ob Computer an ist und wenn dies nicht der Fall ist diesen einschalten" und "Kann Englisch". Letzteres ist dank all der Übersetungsfunktionen (Google Translate, Babelfish) und Online-Wörterbücher (LEO und etliche weitere) einfacher als je zuvor, aber eine Investition an brauchbares Englisch zahlt sich mit der Zeit doppelt und dreifach aus.

Verfasst: Samstag 3. Januar 2009, 18:32
von Boldi
Google Translate ist wirklich sehr hilfreich danke. Damit dürfte es zu schaffen sein, wenn ich denoch fragen hab dann werd ich mich hier melden.

Verfasst: Samstag 17. Januar 2009, 09:05
von Boldi
ein kleines proble: welches modul muss ich importieren um folgende funktionen zu nutzen?

Code: Alles auswählen

url='http://www.google.de'
open_new(url)
open_new_tab(url)
Dann hab ich noch eine Frage zu der folgenden Funktion: Warum wird mir dabei ein Fehler angezeigt?

Code: Alles auswählen

open(url[,new=0[,autoraise=1]])
Also Python meint die kommas müssten weg und es müsste new==1 und autoraise==1 heißen.

Verfasst: Samstag 17. Januar 2009, 09:16
von snafu
Boldi hat geschrieben:ein kleines proble: welches modul muss ich importieren um folgende funktionen zu nutzen?

Code: Alles auswählen

url='http://www.google.de'
open_new(url)
open_new_tab(url)
http://docs.python.org/library/webbrowser.html

Dir ist aber klar, dass du damit deinen "normalen" Standardbrowser öffnest, womit es sehr schwierig wird, Daten zu parsen? Nutze wie gesagt einen Parser wie lxml oder BeautifulSoup um an die gewünschten Infos zu kommen.

Verfasst: Samstag 17. Januar 2009, 10:20
von pudeldestodes
Boldi hat geschrieben: Dann hab ich noch eine Frage zu der folgenden Funktion: Warum wird mir dabei ein Fehler angezeigt?

Code: Alles auswählen

open(url[,new=0[,autoraise=1]])
Also Python meint die kommas müssten weg und es müsste new==1 und autoraise==1 heißen.
Mach die eckigen Klammern weg. In der Doku stehen in den eckigen Klammern optionale Parameter.

Verfasst: Samstag 17. Januar 2009, 11:05
von Rebecca
Hier ein Beispeil fuer die aktuelle Temperatur in Juelich :wink: :

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import re
import urllib2
from BeautifulSoup import BeautifulSoup

def tag2txt(tag):
    replaces = {" ": u"", "°" : u"°"}
    txt = tag.contents[0].strip()
    for (old, new) in replaces.items():
        txt = txt.replace(old, new)
    return txt


try:
    url = urllib2.urlopen("http://www.fz-juelich.de/gs/meteo/metmess1de/")
    soup = BeautifulSoup(url.read())
    temp =  soup.find(text=re.compile("Lufttemperatur")).findNext("td")
    output = u"%s" % tag2txt(temp)    
except urllib2.URLError:
    output = "Unknown"
    
print output.encode("utf-8"),

Verfasst: Samstag 17. Januar 2009, 12:46
von Boldi
danke das ist mir eine große hilfe, aber bei mir kommt die fehlermeldung das BeautifulSoup unbekannt ist

Verfasst: Samstag 17. Januar 2009, 13:15
von cofi
Hmm ... und was sagt dir das? Vielleicht solltest du es installieren? http://www.crummy.com/software/BeautifulSoup/

Verfasst: Samstag 17. Januar 2009, 15:18
von hendrikS
Ich hatte irgendwie Probleme mit der Codiererei und habe den Code wie folgt anpassen müssen, um das erwartete Ergebnis zu erzielen.

Code: Alles auswählen

import re
import urllib2
from BeautifulSoup import BeautifulSoup

def tag2txt(tag):
    #1.Anpassung
    replaces = {" ": u"", "°" : u"\xB0"}
    txt = tag.contents[0].strip()
    for (old, new) in replaces.items():
        txt = txt.replace(old, new)
    return txt


try:
    url = urllib2.urlopen("http://www.fz-juelich.de/gs/meteo/metmess1de/")
    soup = BeautifulSoup(url.read())
    temp =  soup.find(text=re.compile("Lufttemperatur")).findNext("td")
    output = u"%s" % tag2txt(temp)
except urllib2.URLError:
    output = "Unknown"

#2. Anpassung
print output
Ansonsten super Snippet.

Verfasst: Samstag 17. Januar 2009, 17:42
von BlackJack
Man kann BeautifulSoup sagen, dass es HTML-Entities dekodieren soll. Dann braucht man sich da nicht selber drum zu kümmern.

Verfasst: Samstag 17. Januar 2009, 19:21
von Rebecca
BlackJack hat geschrieben:Man kann BeautifulSoup sagen, dass es HTML-Entities dekodieren soll. Dann braucht man sich da nicht selber drum zu kümmern.
Ah, sehr schoen. Werd ich mal einbauen...

Verfasst: Montag 19. Januar 2009, 10:43
von Rebecca
So, hier ist die geaenderte Version:

Code: Alles auswählen

#!/usr/bin/env python

import re
import urllib2
from BeautifulSoup import BeautifulSoup

try:
    url = urllib2.urlopen("http://www.fz-juelich.de/gs/meteo/metmess1de/")
    soup = BeautifulSoup(url.read(),
                         convertEntities=BeautifulSoup.HTML_ENTITIES)

    temp =  soup.find(text=re.compile("Lufttemperatur")).findNext("td")
    output = temp.contents[0].string.strip()

except urllib2.URLError:
    output = "Unknown"

print output

Verfasst: Donnerstag 5. Februar 2009, 16:47
von Boldi
Danke für eure Hilfe. Das hat mir wirklich sehr geholfen, abe rich hab weiterhin ein Problem. Wenn ich:

Code: Alles auswählen

url = urllib2.urlopen("http://www.wetteronline.de/Thueringen/Erfurt.htm")
soup = BeautifulSoup(url.read(),
                         convertEntities=BeautifulSoup.HTML_ENTITIES)
print soup
dann kommt immer nur :
Bild

ich habs auch schon so probiert:

Code: Alles auswählen

url = urllib2.urlopen("http://www.wetteronline.de/Thueringen/Erfurt.htm")
soup = BeautifulStoneSoup(url.read(), convertEntities=BeautifulStoneSoup.HTML_ENTITIES).contents[0] 
print soup
Würde mich über Ratschläge freuen.

Verfasst: Donnerstag 5. Februar 2009, 17:05
von cofi
Ich würde mal sagen, dass du da ein Gif-Bild erwischt hast ;) Und da das binär is, bekommst du natürlich Datensalat. Konkret würde ich mal auf das Sponsor-Bildchen tippen.