Ich habe versucht, htmlagilitypack zu verwenden, um einen Tisch zu analysieren, nachdem ich getan habe, merkte ich, dass ich vergessen habe zu beweisen, ob htmlagility Teil funktioniert oder nicht. ... und es ist offensichtlich, dass es nicht funktioniert Ich wusste auch nicht, was habe ich verpasst und wo habe ich total falsch gemacht ... Ursache ima Anfänger ... so pls nicht zu hart auf mich.
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");
// ich bezweifle, dass da oben etwas falsch ist, aber ich bin mir nicht sicher, was falsch ist.
if (htmlDoc.ParseErrors != null && htmlDoc.ParseErrors.Count() > 0)
{
}
else
{
if (htmlDoc.DocumentNode != null)
{
HtmlAgilityPack.HtmlNode bodyNode = htmlDoc.DocumentNode.SelectSingleNode("//body");
if (bodyNode != null)
{
}
}
}
}
Die Ursprungs-URL ist da, ihr könnt es versuchen
Danke dir XL
Erstens wird das Html Agility Pack von Drittanbietern , das Sie derzeit verwenden, in der universellen App nicht unterstützt. Verwenden Sie HtmlAgilityPack für .NET Core 1.4.9.2, das in der universellen App unterstützt wird.
Zweitens ist der Parameter der Methode htmlDoc.LoadHtml(string html)
nicht der Uri der html-Site, sondern der HTML-Inhalt, der aus einer Webrequest-Antwort erhalten werden kann.
Also sollte der richtige Code wie folgt sein:
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']");
Und ich lade auch das komplette Projekt CHtmlAgility zu github hoch , das Sie zum Testen herunterladen können.