2013-11-30 5 views
1

Является ли кодировка/xml лучшей библиотекой для синтаксического анализа файлов таблицы HTML, подобных этому, и есть примеры того, как это сделать?Анализ HTML-файлов с помощью Go

<html><head> 
<meta charset="utf-8"> 

</head> 
<body> 
<a name="Test1"> 
<center> 
<b>Test 1</b> <table border="0"> 
    <tbody><tr> 
    <th> Type </th> 
    <th> Region </th> 
    </tr> 
    <tr> 
    <td> <table border="0"> 
    <thead> 
    <tr> 
    <th><b>Type</b></th> 
    <th> &nbsp; </th> 
    <th> Count </th> 
    <th> Percent </th> 
    </tr> 
    </thead> 
    <tbody><tr> 
    <td> <b>T1</b> </td> 
    <th> &nbsp; </th> 
    <td class="numeric" bgcolor="#ff0000"> 34,314 </td> 
    <td class="numeric" bgcolor="#ff0000"> 31.648% </td> 
    </tr> 
    <tr> 
    <td> <b>T2</b> </td> 
    <th> &nbsp; </th> 
    <td class="numeric" bgcolor="#bf3f00"> 25,820 </td> 
    <td class="numeric" bgcolor="#bf3f00"> 23.814% </td> 
    </tr> 
    <tr> 
    <td> <b>T3</b> </td> 
    <th> &nbsp; </th> 
    <td class="numeric" bgcolor="#24da00"> 4,871 </td> 
    <td class="numeric" bgcolor="#24da00"> 4.493% </td> 
    </tr> 

</tbody></table><br> 
</td> 
    <td> <table border="0"> 
    <thead> 
    <tr> 
    <th><b> Type</b></th> 
    <th> &nbsp; </th> 
    <th> Count </th> 
    <th> Percent </th> 
    </tr> 
    </thead> 
    <tbody><tr> 
    <td> <b>T4</b> </td> 
    <th> &nbsp; </th> 
    <td class="numeric" bgcolor="#ff0000"> 34,314 </td> 
    <td class="numeric" bgcolor="#ff0000"> 31.648% </td> 
    </tr> 
    <tr> 
    <td> <b>T5</b> </td> 
    <th> &nbsp; </th> 
    <td class="numeric" bgcolor="#53ab00"> 11,187 </td> 
    <td class="numeric" bgcolor="#53ab00"> 10.318% </td> 
    </tr> 
    <tr> 
    <td> <b>T6</b> </td> 
    <th> &nbsp; </th> 
    <td class="numeric" bgcolor="#bf3f00"> 25,820 </td> 
    <td class="numeric" bgcolor="#bf3f00"> 23.814% </td> 
    </tr> 

</tbody></table><br> 
</td> 
    </tr> 
</tbody></table> 
</center> 

    </a> 
</body></html> 

Заранее спасибо.

+5

Вы пробовали http://godoc.org/code.google.com/p/go.net/html - первый результат Google для «golang html parser»;) – elithrar

ответ

4

В зависимости от вашего HTML.

Строго говоря, только один вид HTML, который гарантированно будет проанализирован с помощью соответствующей XML-парсера XHTML, но, несмотря на то, XHTML раз была мысль как прибывающий быть HTML стандарт, оно не имеет действительно снят с земли, и в наши дни он считается устаревшим (в пользу сильно раздутого «HTML5» и всей экосистемы вокруг него). Основная проблема с HTML заключается в том, что, хотя он похож на XML, он имеет разные правила. Одно яркое различие заключается в том, что <br> является совершенно легальным HTML, но является неисчерпаемым элементом в XML (во втором он должен быть записан <br/>) и there are a lot more differences.

С другой стороны, ваш конкретный пример выглядит довольно XML'ish для меня, поэтому, если вы можете гарантировать свои данные, будучи HTML, всегда будет well-formed XML в то же время, вы можете просто использовать пакет encoding/xml. В противном случае перейдите на go.net/html, как предложено @elithrar, или найдите другой пакет.

Смежные вопросы