Informationen aus Website abrufen



  • Hallo Leute,

    ich habe wieder mal ein kleines Problem: Ich möchte mit meinem C#-Programm auf eine Webseite zugreifen und Texte davon abgreifen. Im Internet habe ich folgendes gefunden:

    string shortdescription = webBrowser1.Document.All["ctl00_ContentBody_ShortDescription"].InnerText;
                string longdescription = webBrowser1.Document.All["ctl00_ContentBody_LongDescription"].InnerText;
                string hint = webBrowser1.Document.All["div_hint"].InnerText;
    

    Das klappt auch alles wunderbar und ich kann mittels der ID auf den Text zugreifen:

    <div class="UserSuppliedContent">
    
                <span id="ctl00_ContentBody_ShortDescription">Text von shortdescription
    </span>
    
            </div>
    
            <br />
            <div class="UserSuppliedContent">
    
                <span id="ctl00_ContentBody_LongDescription">Text von longdescription</span>
    
            </div>
    
            <p>
    
            </p>
            <p id="ctl00_ContentBody_hints">
                <strong>
                    Additional Hints</strong>
                (<a id="ctl00_ContentBody_lnkDH" onclick="dht(this);return false;" title="Decrypt" href="#">Decrypt</a>)</p>
            <div id="div_hint" class="span-8 WrapFix">
                Avpug nhs qrz Obqra</div>
    
            <div class="Clear">
            </div>
    
        </div>
    

    Bei folgenden IDs klappt es jedoch nicht:

    <div id="ctl00_ContentBody_CacheInformationTable" class="CacheInformationTable">
                <div class="LocationData FloatContainer">
                    <div class="span-9">
                        <p class="NoBottomSpacing">
                            <a href="#" class="edit-cache-coordinates" id="uxLatLonLink" title="Correct these coordinates">
                                <span id="uxLatLon" style="font-weight:bold;">N 49° 18.379 E 007° 02.182</span>
                            </a>
                            <br />
                            <span id="ctl00_ContentBody_LocationSubPanel" style="display:inline;"><small>
                                UTM: 32U E 357261 N 5463363</small>
                                <br />
                            </span><small>
                                <a id="ctl00_ContentBody_lnkConversions" title="Other Conversions" href="/wpt/?lat=49.306317&amp;lon=7.036367&amp;detail=1" target="_blank">Other Conversions</a>
                            </small>
                        </p>
                    </div>
                    <div class="span-7 last AlignRight">
                        <span id="ctl00_ContentBody_Location">In Saarland, Germany</span><br />
                        <span id="lblDistFromHome"></span>
                    </div>
                </div>
            </div>
    

    In C# habe ich parallel zu oben Folgendes versucht:

    string cachelocation = webBrowser1.Document.All["uxLatLon"].InnerText;
    string cacheland = webBrowser1.Document.All["ctl00_ContentBody_Location"].InnerText;
    

    Beim Ausführen kommt hier jedoch die Fehlermeldung: "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."

    Wo liegt mein Fehler?? 😮

    Ich hoffe, ihr könnt mir helfen!

    LG, Ialokim



  • Debugge einfach mal Schritt für Schritt und schaue wo genau der Fehler kommt.



  • statt

    string cacheland = webBrowser1.Document.All["ctl00_ContentBody_Location"].InnerText;
    

    vll.

    string cacheland = webBrowser1.Document.All["ctl00_ContentBody_LocationSubPanel"].InnerText;
    

    ???

    💡



  • Hallo!

    @Fantoma555: Der Fehler kommt bei der Zeile:

    string cachelocation = webBrowser1.Document.All["uxLatLon"].InnerText;
    

    Wenn ich die aber lösche, kommt er bei der anderen Zeile (s. erster Post).

    @NullbockException: Nee, cachland soll ja "In Saarland, Germany" sein, was unter "ct100_ContentBody_Location" geschrieben steht:

    <span id="ctl00_ContentBody_Location">In Saarland, Germany</span>
    

    Hier nochmal die genaue Fehlermeldung, dir mir Visual Studio 2012 ausgibt:

    In System.NullReferenceException ist eine Ausnahme vom Typ "Geocaching.exe" aufgetreten, doch wurde diese im Benutzercode nicht verarbeitet.

    Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

    Falls ein Handler für diese Ausnahme vorhanden ist, kann das Programm möglicherweise weiterhin sicher ausgeführt werden

    Ich weiß echt nicht, was an meinem Code falsch sein könnte... 😞

    LG, Ialokim

    EDIT: Ich hab den Fehler jz gefunden... Eigentlich total dumm: Um die Objekte überhaupt angezeigt zu bekommen, muss man auf der Seite angemeldet sein. Wenn man im Webbrowser1 angemeldet ist, klappt auch alles wunderbar! 😃


Log in to reply