Wie kann ich in c# eine website auslesen?

3 Antworten

a) Schau zuerst, ob du eine API findest, die dir die Daten zur Verfügung stellt. Dann brauchst du nur noch Requests an diese verschicken und sie gibt dir die Daten in gut lesbarem Format zurück.

Vermutlich ist das die API: https://api.hypixel.net/

Wie man HTTP Requests durchführen kann, habe ich hier schon einmal geschrieben.

b) Nutze das HtmlAgilityPack.

AllesKaese3 
Fragesteller
 29.09.2020, 19:57

Die hab ich schon runtergeladen, nur verstehe ich nicht, wie das funktioniert :-/

0
regex9  29.09.2020, 20:17
@AllesKaese3

Die brauchst du dir nicht herunterladen.

Eine API stellt im Grunde ein Interface dar, welches dir über bestimmte Methoden/Webadressen Informationen liefert. Meist sind APIs geschützt. Das heißt, du brauchst zunächst einen Key.

https://github.com/HypixelDev/PublicAPI#obtaining-an-api-key

So, nun habe ich einmal geschaut, ob es bereits einen C#-Client/Wrapper gibt und bin auf den gestoßen:

https://www.nuget.org/packages/Hypixel.NET/

Schau mal bei dem Example, ob eine Methode dabei ist, die dir die Information liefern würde, die du haben möchtest.

https://github.com/Bregann/Hypixel.NET

Wenn ja, kannst du die Bibliothek leicht via NuGet in dein Projekt einbinden. Den Code kannst du kopieren, den API Key musst du noch einsetzen.

0
regex9  29.09.2020, 20:42
@AllesKaese3

Zwei Wege:

a) Führe im Solution Explorer (Visual Studio) einen Rechtsklick auf dein Projekt aus und wähle NuGet-Pakete verwalten aus. Dort suchst du nach dem Paket und installierst es.

b) Im Options-Menü (Visual Studio) findest du einen Menüpunkt zu NuGet, unter dem sich die Konsole öffnen lässt. Dort gibst du den Befehl ein, der auf der NuGet-Seite steht.

0

erstmal das Prinzipielle lesen einer Webseite per Webrequest:

Webrequest.cs

using System;
using System.IO;
using System.Net;


namespace Examples.System.Net
{
    public class WebRequestGetExample
    {
        public static void Main()
        {
            // Create a request for the URL.
            WebRequest request = WebRequest.Create("https://plancke.io/hypixel/player/stats/ole1tau1");
            // If required by the server, set the credentials.
            request.Credentials = CredentialCache.DefaultCredentials;


            // Get the response.
            WebResponse response = request.GetResponse();
            // Display the status.
            Console.WriteLine(((HttpWebResponse)response).StatusDescription);


            // Get the stream containing content returned by the server.
            // The using block ensures the stream is automatically closed.
            using (Stream dataStream = response.GetResponseStream())
            {
                // Open the stream using a StreamReader for easy access.
                StreamReader reader = new StreamReader(dataStream);
                // Read the content.
                string responseFromServer = reader.ReadToEnd();
                // Display the content.
                Console.WriteLine(responseFromServer);
            }


            // Close the response.
            response.Close();
            //wait fo Keypress
            Console.Read();
        }
    }
}

Das Auswerten des Html ist letztlich reine Stringakrobatik...

Geht schon, aber schau doch mal nach ob es nicht vielleicht eine API gibt, die das ebenfalls kann. Wäre einfacher ;)