HtmlAgility:コンテンツが表示されません(C#、UWP)

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

質問

私はテーブルを解析するためにhtmlagilitypackを使用しようとしましたが、htmlagilityの一部が動作するかどうかを証明するのを忘れてしまったことに気付きました。 ...そしてそれは明らかにそれは仕事をしません私はまた、私は逃していると私は完全に間違っていた知っていなかった...イマ初心者を引き起こす...ので、私はあまりにも難しいです。

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

//私はtheres何かの間違っていることを疑うが、何が間違っているかわからない。

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

        }
        else
        {

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

                if (bodyNode != null)
                {

                }
            }
        }
    }

起源のURLはそこにある、あなたたちは試してみることができた

XLありがとう

人気のある回答

まず、現在使用しているサードパーティ製のHtml Agility PackはUniversal Appでサポートされていません。ユニバーサルアプリケーションでサポートされている.NET Core 1.4.9.2ではHtmlAgilityPackを使用してください。

第2に、メソッドhtmlDoc.LoadHtml(string html)のパラメータは、HTMLサイトのUriではなく、Webリクエストのレスポンスから得られるhtmlコンテンツです。

正しいコードは次のようにする必要があります:

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

また、テスト用にダウンロードできるgithubに完全なプロジェクトCHtmlAgilityをアップロードします。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow