2013-11-27 3 views
3

Я бы хотел разобрать html-страницу с помощью C#. Есть HTML-страницы, которые содержат много HTML-теги, вот пример одного из них:Анализ HTML-кода с C#

<span class=text14 id="article_content"><!-- RELEVANTI_ARTICLE_START --><span ></b>The 
    most important component for <a 
    class=bluelink href="http://www.ynetnews.com/articles/0,7340,L- 
    3284752,00.html%20"' onmouseover='this.href=unescape(this.href)' 
    target=_blank>Israel</a>'s 
    security is its special relations with the American administration, and especially with its generous purse. When the Netanyahu government launches a great outcry against the <a ... 

, но я хотел бы только, чтобы получить содержание обернутый в <span class=text14 id="article_content"> тега. Сначала я думал об использовании предварительного матча, но потом понял, что он неэффективен вообще. я позже читал о Html Agility пакет и FizzlerEx - я хотел бы знать, можно ли получить текст, обернутый по определенному тегу я уже упоминал, используя эти инструменты, и я был бы благодарен если кто-то может сказать мне, насколько быстро эта задача может быть выполнена.

+1

Пожалуйста, поиск и проверить образцы для HtmlAgilityPack. «Как быстро» - я считаю, что разбор будет «O (length_of_html)», и скорость поиска будет зависеть от ваших фактических критериев поиска, но скорее «O (1)», если вам просто нужно искать по «id». –

+0

Прежде всего, спасибо за ответ, но что вы подразумеваете под «скоростью поиска будет зависеть от ваших фактических критериев для поиска?» , о каких критериях вы говорите? –

+0

Ваш образец элемента «span with class and ID» - неясно, какие критерии вы выбрали для этого конкретного элемента. Скорее всего, просто 'id' достаточно, поскольку он уникален в каждом документе - поэтому' O (1) ', если HtmlAgilityPack не оптимизирует этот поиск. –

ответ

5

Это довольно прямо вперед, используя Html Agility Pack:

var markup = @"<span class=text14 id=""article_content""><!-- RELEVANTI_ARTICLE_START --><span ></b>The most important component for <a class=bluelink href=""http://www.ynetnews.com/articles/0,7340,L-3284752,00.html%20""' onmouseover='this.href=unescape(this.href)' target=_blank>Israel</a>'s security is its special relations with the American administration, and especially with its generous purse. When the Netanyahu government launches a great outcry against the</span>"; 

var doc = new HtmlDocument(); 
doc.LoadHtml(markup); 

var content = doc.GetElementbyId("article_content").InnerText; 

Console.WriteLine(content); 
+0

спасибо за ответ, разметка, которую вы определили, - это всего лишь образец страницы, которую я бы хотел разобрать, но она по-прежнему полезна. Еще раз спасибо –