HtmlAgility: содержимое не отображается (C#,UWP)
Я попытался использовать 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");
// Я сомневаюсь, что что-то не так, но я не уверен, что не так.
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
2 ответа
Во-первых, сторонний пакет Html Agility Pack, который вы используете в настоящее время, не поддерживается в универсальном приложении. Пожалуйста, используйте HtmlAgilityPack для.NET Core 1.4.9.2, который поддерживается в универсальном приложении.
Во-вторых, параметр метода htmlDoc.LoadHtml(string html)
это не Uri html-сайта, а 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']");
Также я загружаю полный проект CHtmlAgility на github, который вы можете загрузить для тестирования.
HtmlAgilityPack for UWP (также WinRT и другие подобные технологии) не поддерживает XPath. Ответ от человека, стоящего за HtmlAgilityPack, сам /questions/32324865/htmlagilitypack-and-windows-8-metro-apps/32324878#32324878
Html Agility Pack использует.NET для реализации XPATH. К сожалению, WinRT не поддерживает XPATH, поэтому у вас нет ничего, связанного с XPATH, в Html Agility Pack для WinRT.