HtmlAgility: no apareció ningún contenido (C #, UWP)

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

Pregunta

Traté de usar htmlagilitypack para analizar una tabla, después de terminar, me di cuenta de que olvidé probar si la parte de htmlagility funciona o no. ... y es obvio que no funciona. Tampoco sabía qué he echado de menos y dónde lo he hecho del todo mal ... porque soy un principiante ... así que los pls no son demasiado difíciles para mí.

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");

// Dudo que haya algo mal arriba, pero no estoy seguro de lo que está mal.

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

        }
        else
        {

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

                if (bodyNode != null)
                {

                }
            }
        }
    }

el url de origen está ahí, u chicos podrían intentarlo

Gracias a todos XL

Respuesta popular

En primer lugar, el paquete de terceros Html Agility Pack que está utilizando actualmente no es compatible con la aplicación universal. Utilice HtmlAgilityPack para .NET Core 1.4.9.2, que es compatible con la aplicación universal.

En segundo lugar, el parámetro del método htmlDoc.LoadHtml(string html) no es el sitio Uri de html, sino el contenido html que se puede obtener de la respuesta de una consulta web.

Así que el código correcto debe ser el siguiente:

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']");

Y también subo el proyecto completo CHtmlAgility a github que puedes descargar para probar.



Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow