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.
Importieren von Daten aus dem Internet
nja. du öffnest die seite mir urlopen
und ermittelst dann per RegEx die gewünschten Daten...
Code: Alles auswählen
f = urlopen("url")
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Sorry, aber könntet ihr eventuell mir einen Link schicken wo das ausführlicher erklärt wird.
danke dafür. gibt es kein deutsches tutorial?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
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.
ein kleines proble: welches modul muss ich importieren um folgende funktionen zu nutzen?
Dann hab ich noch eine Frage zu der folgenden Funktion: Warum wird mir dabei ein Fehler angezeigt?
Also Python meint die kommas müssten weg und es müsste new==1 und autoraise==1 heißen.
Code: Alles auswählen
url='http://www.google.de'
open_new(url)
open_new_tab(url)
Code: Alles auswählen
open(url[,new=0[,autoraise=1]])
http://docs.python.org/library/webbrowser.htmlBoldi 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)
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.
-
- User
- Beiträge: 65
- Registriert: Samstag 9. Juni 2007, 23:45
Mach die eckigen Klammern weg. In der Doku stehen in den eckigen Klammern optionale Parameter.Boldi hat geschrieben: Dann hab ich noch eine Frage zu der folgenden Funktion: Warum wird mir dabei ein Fehler angezeigt?Also Python meint die kommas müssten weg und es müsste new==1 und autoraise==1 heißen.Code: Alles auswählen
open(url[,new=0[,autoraise=1]])
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
Hier ein Beispeil fuer die aktuelle Temperatur in Juelich :
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"),
Offizielles Python-Tutorial (Deutsche Version)
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
danke das ist mir eine große hilfe, aber bei mir kommt die fehlermeldung das BeautifulSoup unbekannt ist
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Hmm ... und was sagt dir das? Vielleicht solltest du es installieren? http://www.crummy.com/software/BeautifulSoup/
Ich hatte irgendwie Probleme mit der Codiererei und habe den Code wie folgt anpassen müssen, um das erwartete Ergebnis zu erzielen.
Ansonsten super Snippet.
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
Man kann BeautifulSoup sagen, dass es HTML-Entities dekodieren soll. Dann braucht man sich da nicht selber drum zu kümmern.
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
Ah, sehr schoen. Werd ich mal einbauen...BlackJack hat geschrieben:Man kann BeautifulSoup sagen, dass es HTML-Entities dekodieren soll. Dann braucht man sich da nicht selber drum zu kümmern.
Offizielles Python-Tutorial (Deutsche Version)
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
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
Offizielles Python-Tutorial (Deutsche Version)
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Danke für eure Hilfe. Das hat mir wirklich sehr geholfen, abe rich hab weiterhin ein Problem. Wenn ich:
dann kommt immer nur :
ich habs auch schon so probiert:
Würde mich über Ratschläge freuen.
Code: Alles auswählen
url = urllib2.urlopen("http://www.wetteronline.de/Thueringen/Erfurt.htm")
soup = BeautifulSoup(url.read(),
convertEntities=BeautifulSoup.HTML_ENTITIES)
print soup
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