парсинг HTML для получения данных - PullRequest
0 голосов
/ 06 сентября 2010

У меня проблема с синтаксическим анализом HTML, из которого я хотел бы получить данные

<td id="Company" style="border-bottom-width: 0px; padding-left: 5px">
<strong>ABC</strong>
</td>

, поэтому мне нужны только данные "ABC", я пробовал следующее правило синтаксического анализа, ноне работает

/<td id=\"Company\" style=\"border-bottom-width: 0px; padding-left: 5px\">
<strong>(.*)<\/strong>
<\/td>/i

кто-нибудь может помочь и знаком с этим?

Ответы [ 3 ]

2 голосов
/ 06 сентября 2010

Вы действительно не должны использовать регулярные выражения для разбора HTML. Это всегда заканчивается запутанным запутанным беспорядком.

Используйте библиотеку с функциональностью tidy, такую ​​как Beautiful Soup, JTidy, nekohtml, .... и обходите дерево DOM (или обрабатывает события sax), чтобы получить содержимое тегов.

Regex-ы тогда прекрасны, чтобы получить самородки из камней, как только будет выполнен анализ HTML / XML.

1 голос
/ 03 сентября 2011

Вы можете использовать это регулярное выражение, чтобы получить текст в теге STRONG, вложенный в ячейку:

/<td\s*id="Company"[^>]*>\s*<strong>(.*?)</strong>\s*</td>/ms
0 голосов
/ 15 июля 2013

Простое использование HtmlAgilityPack

HtmlDocumet doc= new HtmlDocument();
doc.loadHtml("<td id="Company" style="border-bottom-width: 0px; padding-left: 5px">
<strong>ABC</strong>
</td>");

HtmlNode node= doc.DocumentNode.selectSingleNode("//strong");

if(node!=null)
     String value= node.innerText;// value have ABC

, если вам нужно получить html из веб-использования

var request = (HttpWebRequest)WebRequest.Create("URL");
var response= (HttpWebResponse)request.getresponse();

 using (var stream = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(1252))) // you could change encoding
                    {
                        output = stream.ReadToEnd(); // output now have html in string form
                    }

переменная outpul содержит html в виде строки, вы можете использовать эту строку для передачи в doc.loadHtml (выход);

, если хотите получить больше информации, google 'htmlagilitypack' и 'HtmlDocument':)

...