Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWünsch Dir wasWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Wert aus Quelltext einer HP lesen

Mitglied: Nilbo91

Nilbo91 (Level 1) - Jetzt verbinden

03.01.2018 um 14:46 Uhr, 1027 Aufrufe, 11 Kommentare, 3 Danke

Hallo zusammen!
Wünsche erstmal ein frohes neues Jahr.

Kurze Infos zu mir da ich neu in diesem Forum bin:
Frank, 26 Jahre, komme aus Nürnberg, arbeite in München als Consultant für BMW und habe eingentlich nichts mit Programmierung oder Ähnlichem am Hut.
Beschäftige mich seit Anfang meines Weihnachtsurlaubs mit der Batchprogrammierung. Habe zuvor im Techniker ein Jahr mit C# arbeiten müssen.
Mein Ziel sind einfache Arbeitserleichterungen für den beruflichen oder privaten Alltag.

Ich möchte ein Batch erstellen der eine Hompage runterläd, daraus einen Wert ausliest und diesen in einer .txt speichert damit ich diese dann in Excel importieren kann.
Der .txt import zu excel war kein Problem.
Wenn ich die Hompage händisch in Firefox öffne und "speichern unter" txt wähle klappt das auslesen der Werte wunderbar.
Hierfür nutze ich folgenden Code:

Jetzt möchte ich das runterladen automatisieren und habe dazu ein VBScript gefunden und ein wenig auf meine Anforderungen abgeändert.
Es funktioniert auch einwandfrei, jedoch gibt es den Quelltext der HP aus und den bekomme ich mit meinem bisherigen Code nicht verabeitet.
Egal was ich probiere um an die Werte zu kommen, es kommt immer nur ein Kauderwelsch dabei raus...

Ich hoffe ihr könnt mir helfen.

Grüße Frank
Mitglied: StefanKittel
03.01.2018 um 14:56 Uhr
Hallo,

probiere es mal mit wget.
Damit kann man prima webseiten runterladen und den Inhalt speichern.

Stefan
Bitte warten ..
Mitglied: Nilbo91
03.01.2018 um 15:50 Uhr
Da ich das Script auch auf anderen PCs nutzen möchte würde ich es gerne nur mit den Bordmitteln von WIndows realisieren.
Bitte warten ..
Mitglied: colinardo
03.01.2018, aktualisiert um 17:12 Uhr
Servus Frank,
also wenn es dir daraum geht den reinen Text der Webseite ohne HTML-Tags zu bekommen da gibt es so einige Möglichkeiten, hier ein paar davon:

Direkt in Excel mit VBA-Makro
Oder als Powershell Einzeiler:
usw.

Aber normalerweise ist auch das Extrahieren aus dem HTML-Code mit etwas Regular Expressions kein wirkliches Problem, wenn du diesen Ausschnitt den du suchst hier postest kann ich dir auch gerne den genauen Weg zu deinem gewünschten String hier posten.

Grüße Uwe
Bitte warten ..
Mitglied: Nilbo91
03.01.2018 um 18:10 Uhr
Schon mal vielen Dank im vorraus Uwe!

Mit Powershell habe ich mich noch nicht befasst.
Schön wäre es natürlich den Powersehll Einzeiler in einer Batch verarbeiten zu können.
Werde mich mal damit beschäftigen nachdem ich das Makro ausprobiert habe.

Hier ein ausschnitt des Textes
.
Es geht um den aktuellen Kurs von Gold. (1.316,10 in Zeile 6)
Mir ist aufgefallen, dass der Code hier im Post scheinbar anders verarbeitet wird. In meiner txt (bei einer html ebenso) gibt es keine Zeilenumbrüche. Da wird nur durch unzählige Leerzeichen getrennt und es sieht aus wie ein einziger Fließtext.

Wie du sicherlich oben gesehen hast habe ich mir die Zeilennummer ausgeben lassen in dem mein Suchbegriff gefunden wurde. Dann habe ich (bisher) nur die zusätzlichen Zeilen zählen und aufaddieren müssen und konnte dann per Stringmanipulation den Wert isolieren. Hier klappt das aber irgendwie nicht....

Ich wäre über eine Lösung oder einen Tip von dir sehr dankbar^^

Grüße Frank
Bitte warten ..
Mitglied: colinardo
LÖSUNG 03.01.2018, aktualisiert um 19:57 Uhr
Kein Problem, schick mir einfach mal den Link zur betreffenden Website dann habe ich den besseren Zusammenhang und extrahiere dir den Wert direkt per Regex, denn das mit den Zeilen ist wie du siehst mies und unzuverlässig.
Hier ist mal ein einfaches Beispiel für den Goldpreis von "http://www.goldpreis.de", das du direkt in der CMD ausführen kannst (Bei Platzierung in einer Batch ist das % Zeichen zu verdoppeln).
Bitte warten ..
Mitglied: Nilbo91
04.01.2018, aktualisiert um 09:35 Uhr
Ich danke dir für die Hilfe!
Bitte mach dir aber nicht die Mühe den Wert per Regex zu isolieren.
Habe gesehen, dass du das selbst gebaut hast und gleich eine ausfühliche Anleitung mitgeliefert hast.
Wie ich oben schon geschrieben habe möchte ich die Batch auch auf anderen Rechnern nutzen und möchte/kann nicht überall die nötigen zusatzprogramme installieren.

Die Lösung mit Powershell gefällt mir super.
Wenig Text, keine zusätzlichen Datein und scheinbar auch recht zügig. (Habe momentan lausiges Internet)

Hier der Link.

1

Werde mich jetzt mal an dein Goldpreis Beispiel machen. Will ja schließlich auch verstehen was da passiert^^
Bitte warten ..
Mitglied: colinardo
LÖSUNG 04.01.2018, aktualisiert um 10:19 Uhr
Gut, für die Consors-Seite brauchst du hier ausnahmsweise diesmal nur die URL und den Klassennamen entsprechend austauschen da es auch hier nur ein Element mit dem jeweiligen Klassennamen auf der Seite gibt:
Will ja schließlich auch verstehen was da passiert
Nun es passiert folgendes:
Die Seite wird mit iwr = Invoke-Webrequest heruntergeladen und in ein Objekt geladen von dem wir die Eigenschaft ParsedHtml abrufen und aus diesem die Methode getElementsByClassName('KLASSENNAME') aufrufen welche die Knoten mit dem entsprechenden Klassennamen ausfiltert. Dann wird per Foreach-Schleife (%{}) die Eigenschaft innerText des Knotens ($_ ist die Pipelinevariable) ausgelesen und eventuelle Leerzeichen am Anfang oder Ende des Strings entfernt.

Hoffe das bringt etwas Licht ins Dunkel. Leider kann ich dir hier keinen Grundkurs Powershell geben, aber vielleicht einen Anreiz sich die Skript-Sprache näher anzuschauen

Wünsche Dir weiterhin viel Erfolg!
Grüße Uwe
Bitte warten ..
Mitglied: Nilbo91
04.01.2018 um 15:12 Uhr
Ok alles klar. Das getElementsByClassName habe ich verstanden. Die Umleitung der Ausgabe in eine txt hat auch geklappt.

Bei der nächsten HP sieht es aber nun so aus...
Zeilen 640 - 642

...mit "class=col-currency" schmeißen die auf https://www.bitfinex.com/stats">https://www.bitfinex.com/stats leider nur so um sich.
Komme also wieder nicht weiter -.-

Leider finde ich auch keine HP die mir die verfügbaren Funktionen in Powershell erklärt. Mit http://www.batchlog.pytalhost.com/Batch.html">http://www.batchlog.pytalhost.com/Batch.html konnte ich mir bisher fast alles selber erarbeiten. Gibt es sowas auch für Powershell?

Grüße Frank
Bitte warten ..
Mitglied: colinardo
LÖSUNG 04.01.2018, aktualisiert um 16:31 Uhr
Hallo nochmal,
da gibt es mehrere praktische Ansätze. Entweder man kennt die absolute Position (die man manuell ermitteln kann) und nimmt dann den Index der Auflistung, oder man sucht erst nach dem BTC/USD Knoten und referenziert dann den nächsten Nachbarknoten (nextSibling), was hier bspw. mein Weg wäre:
Leider finde ich auch keine HP die mir die verfügbaren Funktionen in Powershell erklärt.
Das ist auch fast unmöglich, denn Powershell unterstützt das gesamte Arsenal des .NET Frameworks. D.h. alles was du auch in C#, VB.Net etc. machen kannst kannst du auch mit der Powershell erledigen.
In deinem Fall hier kommen noch die Grundlagen des gesamten HTML-DOM-Object hinzu welche Invoke-Webrequest mit der Eigenschaft parsedHtml bereitgestellt werden. Überfordere dich nicht, lerne es Schritt für Schritt, denn sonst verlierst du den Überblick, Quereinstieg schön und gut aber Grundlagen sind hier Pflichtprogramm und natürlich üben, üben, üben.
Hast du einmal den Bogen raus möchtest du Batch nicht mehr sehen, glaubs mir.

Ein guter Anfang für die Powershell Grundlagen:

Powershell Grundlagen- und Praxisvermittlung:


Wenns das dann war, den Beitrag bitte noch auf gelöst setzen, und Lösungen markieren. Merci.

Grüße Uwe
Bitte warten ..
Mitglied: Nilbo91
05.01.2018 um 16:35 Uhr
Vielen Danke für die Hilfe.
Nun klappt alles!

Eine letzte Frage rein zur Optimierung:
Kann man an den ersten Suchauftrag zB. wie in deinem Code oebn BTC/USD noch einen zweiten anhängen?

Auf der HP auf der BTC/USD steht, stehen nämlich noch 2 weitere Werte die ich brauche und jetzt "läd" bzw durchsucht das programm jedes mal die komplette Seite erneut. IOTA/USD und XRP/USD.

Bekomme es mit || und/oder && nicht hin

Grüße Frank

PS: Danke für die Links. Werde sie mir zeitnah zu Gemüte führen ;)
Bitte warten ..
Mitglied: colinardo
05.01.2018, aktualisiert um 16:59 Uhr
Mit dem -match Operator und etwas Regular Expressions z.B.
Das Select -First 3 hier weil unten auf der Seite die Werte nochmal erscheinen.

Alternativ kann man auch die Werte in einem Array ablegen und dann im Where-Object mit dem -in Operator prüfen ob ein Wert mit dem Array übereinstimmt.

-edit- Tippfehler korrigiert
Bitte warten ..
Ähnliche Inhalte
Humor (lol)
Quelltext, made my day
Frage von sabinesHumor (lol)9 Kommentare

Moin, mal was schönes zum Wochenstart. Aus meiner ehemaligen Selbständigkeit ruft mich eben ein Kunde an, er habe ich ...

JavaScript
Jquery: Wert berechnen
Frage von LorderichJavaScript5 Kommentare

Hallo zusammen, irgendwie verzweifle ich gerade an einer scheinbar einfachen Sache: Sobald im Select Bereich "Item " etwas ausgewählt wird, ...

HTML

Variablen im Quelltext einer html seite durch url parameter "austauschen"

Frage von ad.minHTML7 Kommentare

Ich würde gerne eine Landingpage nach dem Muster nutzen. Wie in dem Beispiel gibt es immer drei Variablen: Job ...

Batch & Shell

Variable über Wert aussuchen

gelöst Frage von CreatorXBatch & Shell2 Kommentare

Hallo, ich beschäftige mich gerade mit dem erstellen eines Windows Batchscripts. Folgendes Problem: Es gibt Verschiedene Variablen, die sind ...

Neue Wissensbeiträge
Sicherheit

Mehrere Sicherheitslücken in QNAP-NAS-Systemen aufgetaucht

Information von transocean vor 2 StundenSicherheit

Moin, QNAP hat drei Sicherheitsprobleme publik gemacht und empfiehlt sofortiges Update. Gruß Uwe

DNS

"Quickie": Mozillas "DNS over HTTPS" in pfSense blockieren

Anleitung von FA-jka vor 4 StundenDNS2 Kommentare

Hallo, Mozilla macht jetzt wohl wirklich Ernst mit "DNS over HTTPS" (kurz: DoH). Damit werden sämtliche DNS-Anfragen zu entsprechenden ...

Sicherheit
Störung bei Telematikinfrasturktur GEMATIK
Information von lcer00 vor 13 StundenSicherheit

Am 27. Mai 2020 ist es offenbar zu einer Fehlkonfiguration in der Zentralen Telematikinfrastruktur gekommen. Nähreres dazu findet sich ...

Informationsdienste

Trump vs Twitter - Angriff auf die Meinungsfreiheit?

Information von Frank vor 1 TagInformationsdienste3 Kommentare

Trump nutzt Twitter rege. Nach Hinweisen auf Falschbehauptungen drohte er dem Dienst. Was das bedeutet und die Konsequenzen dazu ...

Heiß diskutierte Inhalte
Sicherheits-Tools
Passwortmanager DGSVO (Deutscher Anbieter - Hoster)
Frage von SoccerdeluxSicherheits-Tools39 Kommentare

Hallo zuammen, ich arbeite für meine Kunden auf unterschiedlichen Geräten / Notebooks. Ich ärgere mich jedesmal, das ich mein ...

Batch & Shell
Ip-Adresse-Konfiguration speichern zur Wiederherstellung
gelöst Frage von alex1991Batch & Shell20 Kommentare

Hallo, ich bin eigentlich nicht in der IT-Abteilung, aber als Programmierer bin ich noch am nächsten dran. Deshalb wurde ...

Exchange Server
Automatische Antwort - Weiterleitung - zweite automatische Antwort - keine Weiterleitung?
Frage von dertowaExchange Server18 Kommentare

Hallo zusammen, da mich der Microsoftsupport ein wenig fassungslos machte versuche ich hier mal mein Glück und wenn es ...

Netzwerkgrundlagen
PF Sense - Keine Verbindung nach "außen"
gelöst Frage von mario89Netzwerkgrundlagen14 Kommentare

Hallo Leute, muss euch nochmalum Rat fragen. Weil irgendwie komme ich nicht weiter. Hintergrund ist, dass ich bei meiner ...