Разбор HTML-строки
Есть ли способ разобрать HTML-строку в .Net-коде, как разбор DOM...
то есть. GetElementByTagName ( "а" ). GetElementByTagName ( "метка" )
У меня есть этот кусок кода...
private void LoadProfilePage()
{
string sURL;
sURL = "http://www.abcd1234.com/abcd1234";
WebRequest wrGETURL;
wrGETURL = WebRequest.Create(sURL);
//WebProxy myProxy = new WebProxy("myproxy",80);
//myProxy.BypassProxyOnLocal = true;
//wrGETURL.Proxy = WebProxy.GetDefaultProxy();
Stream objStream;
objStream = wrGETURL.GetResponse().GetResponseStream();
if (objStream != null)
{
StreamReader objReader = new StreamReader(objStream);
string sLine = objReader.ReadToEnd();
if (String.IsNullOrEmpty(sLine) == false)
{
....
}
}
}
Ответы
Ответ 1
Вы можете использовать отличный HTML Agility Pack.
Это гибкий HTML-синтаксический анализатор, который создает DOM для чтения/записи и поддерживает простой XPATH или XSLT (на самом деле не нужно понимать XPATH или XSLT, чтобы использовать его, не беспокойтесь...). Это библиотека .NET-кода, которая позволяет анализировать HTML файлы вне Интернета. Парсер очень толерантен с искаженным HTML-кодом "реального мира". Объектная модель очень похожа на то, что предлагает System.Xml, но для HTML-документов (или потоков).
Ответ 2
Взгляните на использование Html Agility Pack
Пример его использования:
HtmlDocument doc = new HtmlDocument();
doc.Load("file.htm");
foreach(HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]")
{
HtmlAttribute att = link["href"];
att.Value = FixLink(att);
}
Ответ 3
Вы можете использовать HTML Agility Pack и немного XPath (он может даже загрузить документ для вас):
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("http://www.abcd1234.com/abcd1234");
HtmlNodeCollection tags = doc.DocumentNode.SelectNodes("//abc//tag");
Ответ 4
Я использовал HTML Agility Pack, чтобы сделать это точно, и я считаю, что это здорово. Это было действительно полезно для меня.
Ответ 5
возможно, это может помочь: Каков наилучший способ разобрать html на С#?