HtmlAgility: nessun contenuto apparso (C #, UWP)

c# html html-agility-pack uwp win-universal-app

Domanda

Ho provato ad usare htmlagilitypack per analizzare un tavolo, dopo che ho fatto mi sono reso conto che ho dimenticato di dimostrare se la parte htmlagility funziona o meno. ... ed è ovvio che non funziona anche io non sapevo cosa ho perso e dove ho fatto del tutto sbagliato ... perché ima principiante ... quindi non essere troppo duro con me.

public partial class WebForm1 : System.Net.Http.HttpClient
{
    protected void Page_Load(object sender, EventArgs e)
    {

        System.Net.Http.HttpClient httpClient = new System.Net.Http.HttpClient();

        string header = "ie";
        if (!headers.UserAgent.TryParseAdd(header))
        {
            throw new Exception("Invalid header value: " + header);
        }

        header = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)";
        if (!headers.UserAgent.TryParseAdd(header))
        {
            throw new Exception("Invalid header value: " + header);
        }

        HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();


        htmlDoc.LoadHtml(" http://www.eurogymnasium-waldenburg.de/egw_content/Stunden_Vertretungsplan/home.html");



        HtmlNode docNodes = htmlDoc.DocumentNode;

        HtmlNode navNode = htmlDoc.GetElementbyId("bereichaktionen");

        HtmlNode docNode = htmlDoc.DocumentNode.SelectSingleNode("/html/body[@class='ui-widget']/div[@id='main']/div[@id='vplan']/div[@id='bereichaktionen']");

        string nodeValue;

        nodeValue = (docNode.InnerText);

        Debug.WriteLine("nodeValue");

// dubito che ci sia qualcosa di sbagliato sopra ma non sono sicuro che cosa sia sbagliato.

        if (htmlDoc.ParseErrors != null && htmlDoc.ParseErrors.Count() > 0)
        {

        }
        else
        {

            if (htmlDoc.DocumentNode != null)
            {
                HtmlAgilityPack.HtmlNode bodyNode = htmlDoc.DocumentNode.SelectSingleNode("//body");

                if (bodyNode != null)
                {

                }
            }
        }
    }

l'url di origine è lì, ragazzi potete provarci

Grazie a tutti XL

Risposta popolare

In primo luogo, il pacchetto di terze parti Html Agility Pack attualmente in uso non è supportato nell'app universale. Utilizzare HtmlAgilityPack per .NET Core 1.4.9.2 che è supportato nell'app universale.

In secondo luogo, il parametro del metodo htmlDoc.LoadHtml(string html) non è l'Uri del sito html, ma il contenuto html che può essere ottenuto dalla risposta di un webrequest.

Quindi il codice giusto dovrebbe essere il seguente:

WebRequest request = HttpWebRequest.Create("http://www.eurogymnasium-waldenburg.de/egw_content/Stunden_Vertretungsplan/home.html");
WebResponse response = await request.GetResponseAsync();
Stream stream = response.GetResponseStream();
var result = "";
using (StreamReader sr = new StreamReader(stream))
{
    result = sr.ReadToEnd();
}
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(result);
var node = htmlDoc.DocumentNode.SelectSingleNode("/html/body[@class='ui-widget']/div[@id='main']/div[@id='vplan']/div[@id='bereichaktionen']");

E carico anche il progetto completo CHtmlAgility su github che puoi scaricare per i test.



Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché