Homepage auslesen

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Kangaroo.

    Homepage auslesen

    Hallo zusammen,
    ich habe vor ein Programm in VB 2008 zu schreiben, durch welches es möglich sein soll seine Ausrüstung in einem Onlinespiel im Vorraus (also bevor man sich die Ausrüsrung im Spiel baut) zu planen.
    Angesichts der Tatsache, das es in dem Spiel (RunesofMagic.com) tausende von unterschiedlichen Ausrüstungsgegenständen gibt, kann ich diese schlecht in mein Programm intigrieren, worauf ich mir gedacht habe, ich lese die Ausrüstungsteile einfach aus einer Online-Datenbank für das Spiel aus.
    Das Programm soll also auf die Homepage der Datenbank für das Spiel gehen (für den Nutzer unsichtbar) (de.runesdatabase.com) und dort automatisch in die Suche eingeben, nach was der Benutzer sucht (z.B. Kopfbedeckung). Das Programm soll dann alle Suchergebnisse in das Programm auslesen und sie dort anzeigen.
    Außerdem sollen die Werte der jeweiligen Gegenstände ausgelesen werden. Gut sehen kann man das an einem bsp., z.B. bei de.runesdatabase.com/item/227248
    Das Programm soll also die ganzen Werte, die der Gegenstand hat auslesen (Verteidigung, Angriff, Intelligenz etc.) und im Programm anzeigen.
    Meine Frage: Wie soll ich das am besten und am geschicktesten anstellen? Mit einem versteckten Webbrowser auf die Seite navigieren und den Seitenquelltext auslesen? Oder gibt es da sauberere Lösungsansetze?
    Wäre echt super wenn mir jemand helfen könnte,
    bei weiteren Fragen einfach fragen xD
    Danke schonmal im Vorraus
    lg henny
    Code zum suchen (aus dem Kopf, kann Fehler haben):

    VB.NET-Quellcode

    1. Webbrowser1.Navigate("http://de.runesdatabase.com/")
    2. Do While Webbrowser1.ReadyState <> WebBrowserReadyState.Complete
    3. Application.DoEvents()
    4. Loop
    5. Webbrowser1.getelementbyid("start-search-field").setattribute(textbox1.text)
    6. 'Er navigiert und fügt in die Box den Test aus TextBox1 rauß
    7. 'Nun muss er den Javascript ausführen


    Auslesen:

    VB.NET-Quellcode

    1. Dim title As String
    2. 'Hier müsste aus dem Webbrowser diese Klasse auslesen


    Mehr mach ich nicht, da du das so hinbekommen kannst.
    Ich empfehle dir das über den Webbrowser zu machen.
    Oder du machst das über den XML Link was Kangaroo geschrieben hat.

    Mfg
    Problem ist das hier entschlüsseln:

    Quellcode

    1. var pdg1 = new PDG('pdg1', [{"tpl":"items","n":"Gegenst\u00e4nde","id":"items","tclass":"default-table","rows":[{"id":201087,"n":"1Einfacher Waffenbohrer","rl":1,"t":null,"as":0,"dps":0,"v1":null,"v2":null,"fs":0,"xpb":0,"tpb":0,"i":"quest_papyrus01","cat":{"it":"Spezielles","itl":"9"},"is":[{"n":"Making a Strip of Plank Wood","t":2,"id":422961},{"n":"Einfacher Waffenbohrer","t":6,"id":201087}]}]}], [], null);
    2. pdg1.run();
    Danke Kangaroo,
    eine Liste mit allen Items (Namen) hab ich ja jetzt schonmal.
    Problem ist nur, das in der Liste nicht die Werte der Gegenstände aufgelistet sind.
    Ich müsste also das Programm die Liste zuerst durchsuchen lassen, und dann durch die ID auf die Internetseite des jeweiligen Gegenstandes Navigieren und dort die Werte auslesen.
    Suchen nach Items brauche ich ja jetzt nicht mehr, nur noch das auslesen einer solchen: de.runesdatabase.com/item/227248 Seite (Verteidigung, Intelligenz, Lebenspunkte etc.)
    Weis jemand wie ich hier am besten die Informationen aus dem Quellcode lese?
    Edit:
    Ups, fail meinerseits:
    Habe gar nicht den Link zu den XML-Dateien einzelner Items gesehen.
    Somit liegen mir also alle Informationen zu dem Gegenstand in einer XML-Datei vor.
    Jetzt muss ich nur noch herrausfinden wie ich das im Programm auslese und dann hab ichs^^.
    Ich suche mal eben, wenn jemand aber nen Tipp zu ner dll oder so hat, die einem das auslesen übernimmt, nur her damit.^^
    edit2: Danke an euch, habe was bei msn gefunden:
    msdn.microsoft.com/de-de/library/bb979298.aspx
    Ich werde das jetzt mal durcharbeiten und versuchen den Code zu verstehen, wenn etwas nicht klappt melde ich mich wieder ;)
    edit3:
    Ich hab den Code jetzt mal probiert, doch leider kommt folgendes Ergebnis:

    Quellcode

    1. Es folgt ein Element vom Typ romitem
    2. Es folgt ein Element vom Typ itemid
    3. Es folgt ein Text: 227248
    4. Es folgt ein Element vom Typ name
    5. Es folgt ein Text: Chapeaunoirs Kopfbedeckung
    6. Es folgt ein Element vom Typ iconpath
    7. Es folgt ein Text: eq_hm_male_helmet_07_mob-graf-cloth-01
    8. Es folgt ein Element vom Typ quality
    9. Es folgt ein Text: 3
    10. Es folgt ein Element vom Typ level
    11. Es folgt ein Text: 0
    12. Es folgt ein Element vom Typ tooltip
    13. Es folgt ein Text: <table width="100%"><tr><td align="left" class="rom_tooltiptitle rom_q3" colspan="2">Chapeaunoirs Kopfbedeckung</td></tr><tr><td align="left" class="rom_yellow" colspan="2">Wird beim Ausrüsten gebunden</td></tr><tr><td align="left" class="rom_default">Grad 3</td><td align="right" class="rom_default">Haltbarkeit 100</td></tr><tr><td align="left" class="rom_default" colspan="2">Voraussetzung: Stufe 65</td></tr><tr><td align="left" class="rom_default">Stoff</td><td align="right" class="rom_default">Kopf</td></tr><tr><td align="left" class="rom_default">Physische Verteidigung 1374</td><td align="right" class="rom_default">Magische Verteidigung 2623</td></tr><tr><td align="left" class="rom_default" colspan="2">Ladenpreis: 966 Gold</td></tr><tr><td align="left" class="rom_green" colspan="2">+844 Maximale LP</td></tr><tr><td align="left" class="rom_green" colspan="2">+170 Magische kritische Trefferrate</td></tr><tr><td align="left" class="rom_green" colspan="2">+170 Intelligenz</td></tr><tr><td align="left" class="rom_default" colspan="2">(Erhalte zufällig zusätzliche Fähigkeit.)</td></tr><tr><td colspan="2"><hr class="rom_tooltip_hr"></td></tr><tr><td align="left" class="rom_brown" colspan="2"><a class="rom_brown" href="/itemset/610323">Herz der Illusion (4)</a></td></tr><tr><td align="left" class="rom_gray" colspan="2"><a class="rom_gray" href="/item/227248">  Chapeaunoirs Kopfbedeckung</a></td></tr><tr><td align="left" class="rom_gray" colspan="2"><a class="rom_gray" href="/item/227249">  Chapeaunoirs Schulterschützer</a></td></tr><tr><td align="left" class="rom_gray" colspan="2"><a class="rom_gray" href="/item/227250">  Chapeaunoirs Robe</a></td></tr><tr><td align="left" class="rom_gray" colspan="2"><a class="rom_gray" href="/item/227251">  Chapeaunoirs Stiefel</a></td></tr><tr><td align="left" class="rom_gray" colspan="2">2 Stücke +120 Intelligenz</td></tr><tr><td align="left" class="rom_gray" colspan="2">3 Stücke +120 Intelligenz, +1410 Magischer Angriff</td></tr><tr><td align="left" class="rom_gray" colspan="2">4 Stücke +120 Intelligenz, +1410 Magischer Angriff, +100 Weisheit, +200 Magische kritische Trefferrate, +55 Magieschadenspunkte</td></tr><tr><td align="left" class="rom_default" colspan="2">Benötigt für Set-Fertigkeit: 4</td></tr><tr><td align="left" class="rom_brightyellow" colspan="2"><a class="rom_brightyellow" href="/skill/496106">Zaubertricks</a></td></tr></table>

    Das Problem ist, das der ganze letzte Teil irgendwie nicht eingelesen wird!?
    Nur der Anfang mit den unwichtigen Informationen wird eingelesen, doch der Rest mit den Informationen über Verteidigung, Angriff und etc. bleibt im gleichen Format.
    Muss ich das irgendwie anderst auslesen?
    Kann mir da jemand helfen?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „henny“ ()

    Ich kenne mich mit HTML nicht so aus, aber könnte natürlich sein^^.
    Kann das jemand bestätigen das

    Quellcode

    1. Es folgt ein Text: <table width="100%"><tr><td align="left" class="rom_tooltiptitle rom_q3" colspan="2">Chapeaunoirs Kopfbedeckung</td></tr><tr><td align="left" class="rom_yellow" colspan="2">Wird beim Ausrüsten gebunden</td></tr><tr><td align="left" class="rom_default">Grad 3</td><td align="right" class="rom_default">Haltbarkeit 100</td></tr><tr><td align="left" class="rom_default" colspan="2">Voraussetzung: Stufe 65</td></tr><tr><td align="left" class="rom_default">Stoff</td><td align="right" class="rom_default">Kopf</td></tr><tr><td align="left" class="rom_default">Physische Verteidigung 1374</td><td align="right" class="rom_default">Magische Verteidigung 2623</td></tr><tr><td align="left" class="rom_default" colspan="2">Ladenpreis: 966 Gold</td></tr><tr><td align="left" class="rom_green" colspan="2">+844 Maximale LP</td></tr><tr><td align="left" class="rom_green" colspan="2">+170 Magische kritische Trefferrate</td></tr><tr><td align="left" class="rom_green" colspan="2">+170 Intelligenz</td></tr><tr><td align="left" class="rom_default" colspan="2">(Erhalte zufällig zusätzliche Fähigkeit.)</td></tr><tr><td colspan="2"><hr class="rom_tooltip_hr"></td></tr><tr><td align="left" class="rom_brown" colspan="2"><a class="rom_brown" href="/itemset/610323">Herz der Illusion (4)</a></td></tr><tr><td align="left" class="rom_gray" colspan="2"><a class="rom_gray" href="/item/227248"> Chapeaunoirs Kopfbedeckung</a></td></tr><tr><td align="left" class="rom_gray" colspan="2"><a class="rom_gray" href="/item/227249"> Chapeaunoirs Schulterschützer</a></td></tr><tr><td align="left" class="rom_gray" colspan="2"><a class="rom_gray" href="/item/227250"> Chapeaunoirs Robe</a></td></tr><tr><td align="left" class="rom_gray" colspan="2"><a class="rom_gray" href="/item/227251"> Chapeaunoirs Stiefel</a></td></tr><tr><td align="left" class="rom_gray" colspan="2">2 Stücke +120 Intelligenz</td></tr><tr><td align="left" class="rom_gray" colspan="2">3 Stücke +120 Intelligenz, +1410 Magischer Angriff</td></tr><tr><td align="left" class="rom_gray" colspan="2">4 Stücke +120 Intelligenz, +1410 Magischer Angriff, +100 Weisheit, +200 Magische kritische Trefferrate, +55 Magieschadenspunkte</td></tr><tr><td align="left" class="rom_default" colspan="2">Benötigt für Set-Fertigkeit: 4</td></tr><tr><td align="left" class="rom_brightyellow" colspan="2"><a class="rom_brightyellow" href="/skill/496106">Zaubertricks</a></td></tr></table>

    HTML ist?
    Und wenn ja, muss ich wohl mal suchen wie ich den am besten Parse, oder kennt da jemand ne Quelle für?
    Schon mal gesehen, dass diese xml-Datei nur 1 einzigen Eintrag enthält - jedenfalls wenn ich sie mir runterlade und mit dem Editor anschaue ? Vermutlich ist die automatische Generierung dieser XML Datei kaputt, die anderen scheinen ja etwas zu enthalten.

    Also entweder
    - im Forum nachfragen ob man das reparieren kann
    - andere Datenbank suchen
    - abhängig vom Item den Sourcecode der HTML-Source parsen
    Also bei mir ist in der XML-Datei mehr als nur ein Eintrag enthalten.

    Quellcode

    1. <table width="100%"><tr><td align="left" class="rom_tooltiptitle rom_q4" colspan="2">Moas Axt des Wahnsinns</td></tr><tr><td align="left" class="rom_yellow" colspan="2">Wird beim Ausrüsten gebunden</td></tr><tr><td align="left" class="rom_default" colspan="2">Geht bei PvP-Tod nicht verloren</td></tr><tr><td align="left" class="rom_default" colspan="2">Grad 3</td></tr><tr><td align="left" class="rom_default" colspan="2">Voraussetzung: Stufe 50</td></tr><tr><td align="left" class="rom_default">Axt</td><td align="right" class="rom_default">Einhand</td></tr><tr><td align="left" class="rom_default">Physischer Schaden 721</td><td align="right" class="rom_default">Angriffsgeschwindigkeit 2.8</td></tr><tr><td align="left" class="rom_default" colspan="2">Magischer Schaden 253</td></tr><tr><td align="left" class="rom_default" colspan="2">Ladenpreis: 2284 Gold</td></tr><tr><td align="left" class="rom_yellow">+30 Stärke<br>+72 Physischer Angriff</td><td align="right" class="rom_default">Wahnsinn VI</td></tr><tr><td align="left" class="rom_yellow">+30 Geschicklichkeit<br>+72 Physischer Angriff</td><td align="right" class="rom_default">Kaltblut VI</td></tr><tr><td align="left" class="rom_yellow">+30 Stärke<br>+30 Geschicklichkeit</td><td align="right" class="rom_default">Henker VI</td></tr><tr><td align="left" class="rom_yellow">+30 Stärke<br>+30 Ausdauer</td><td align="right" class="rom_default">Durchbruch VI</td></tr><tr><td align="left" class="rom_yellow">+30 Stärke<br>+90 Verteidigung</td><td align="right" class="rom_default">Ansporn VI</td></tr><tr><td align="left" class="rom_yellow">+30 Ausdauer<br>+60 Physischer Angriff</td><td align="right" class="rom_default">Himmelsfeuer VI</td></tr><tr><td align="left" class="rom_blue" colspan="2">Es ist kaum wahrnehmbar, doch ihr glaubt zu spüren, dass sich darin eine Art Geist befindet, der aufgeregt herum springt.</td></tr></table>

    Da ist der Name des Items, die Verteidigung, die Werte, das benötigte Level und vieles mehr drin.
    Mir ist grade aufgefallen, das diese informationen immer zwischen "><" stehen.
    Dann müsste ich eigentlich den Text mit regex so auslesen, das in einen Array alle "Wörter", die zwischen >< stehen geschrieben werden.
    Wie stelle ich das am geschicktesten an?