使用HTML Agility Pack解析HTML

时间:2012-06-15 05:41:55

标签: c# html-agility-pack

我需要使用HTML Agility Pack解析HTML文件。这里是div,class attribute = divTableBodyText,里面有table。我需要得到表的内容。我为数据创建了类,但不知道如何获取数据。

<html>
<body>
    <div class="divTableBodyText">
        <table class="tableBodyText fdff_L" cellpadding="0" cellspacing="0">
            <tbody>
                <tr>
                    <td>
                        &nbsp;
                    </td>
                </tr>
                <tr>
                    <td>
                        <span class="fontSize textBold">Выберите тариф.</span> Разница цен в пределах одного
                        типа тарифа может возникнуть из-за условий выполнения рейса, связанных с колличеством
                        пересадок и доступностью мест. Цены указаны для взрослого пассажира с учетом Сборов
                        / Налогов.
                    </td>
                </tr>
                <tr>
                    <td>
                        &nbsp;
                    </td>
                </tr>
            </tbody>
        </table>
        <div class="FFInfoPanel">
        </div>
        <table class="fdff_tableFF" cellspacing="0">
            <tbody>
                <tr>
                    <th>
                        &nbsp;
                    </th>
                    <th>
                        Тип тарифа
                    </th>
                    <th width="55%">
                        Описание тарифа
                    </th>
                    <th>
                        Минимальная цена
                    </th>
                    <th>
                        Другие авиарейсы
                    </th>
                </tr>
                <tr class="">
                    <td style="background-color: rgb(255, 255, 255); border-right: medium none; padding: 0px 4px 0px 0px;">
                        &nbsp;
                    </td>
                    <td class="textBold" width="15%">
                        Special-Kazakhstan
                    </td>
                    <td class="wrap" id="FN_0" width="55%">
                        Специальный тариф экономического класса с ограничениями <a href="javascript:fareFamilyDescriptionPopUp.redirectToAnExternalPopUp('http://www.airastana.com/int/ru/Fare-Family-Special-Kazakhstan.aspx');">
                            Дополнительная информация</a>
                    </td>
                    <td style="background-color: rgb(255, 255, 255); color: rgb(0, 0, 0);" class="white"
                        id="FRB_1_0" _isdisabled="false" width="15%">
                        <input id="RB0" name="FamilyButton" value="0|1" onclick="javascript:FDFF.selectRecommendationSet('0', true,'0', 'FRB_1_0',false);"
                            checked="checked" type="radio">
                        47&nbsp;917 KZT
                    </td>
                    <td class="white" id="FRB_2_0" _isdisabled="" width="15%">
                        &nbsp;
                    </td>
                </tr>
                <tr class="bgrd">
                    <td style="background-color: rgb(255, 255, 255); border-right: medium none; padding: 0px 4px 0px 0px;">
                        &nbsp;
                    </td>
                    <td class="textBold" width="15%">
                        Flexible-Kazakhstan
                    </td>
                    <td class="wrap" id="FN_1" width="55%">
                        Специальный тариф экономического класса с возможностью бесплатного перебронирования
                        до отправления. <a href="javascript:fareFamilyDescriptionPopUp.redirectToAnExternalPopUp('http://www.airastana.com/int/ru/Fare-Family-Flexible-Kazakhstan.aspx');">
                            Дополнительная информация</a>
                    </td>
                    <td class="white" id="FRB_1_1" _isdisabled="false" width="15%">
                        <input id="RB1" name="FamilyButton" value="1|1" onclick="javascript:FDFF.selectRecommendationSet('1', true,'1', 'FRB_1_1',false);"
                            type="radio">
                        52&nbsp;397 KZT
                    </td>
                    <td class="white" id="FRB_2_1" _isdisabled="" width="15%">
                        &nbsp;
                    </td>
                </tr>
                <tr class="">
                    <td style="background-color: rgb(255, 255, 255); border-right: medium none; padding: 0px 4px 0px 0px;">
                        &nbsp;
                    </td>
                    <td class="textBold" width="15%">
                        Full flexible
                    </td>
                    <td class="wrap" id="FN_2" width="55%">
                        Нормальный тариф экономического класса без ограничений <a href="javascript:fareFamilyDescriptionPopUp.redirectToAnExternalPopUp('http://www.airastana.com/int/ru/Fare-Family-Full-Flexible.aspx');">
                            Дополнительная информация</a>
                    </td>
                    <td class="white" id="FRB_1_2" _isdisabled="false" width="15%">
                        <input id="RB2" name="FamilyButton" value="2|1" onclick="javascript:FDFF.selectRecommendationSet('2', true,'2', 'FRB_1_2',false);"
                            type="radio">
                        56&nbsp;267 KZT
                    </td>
                    <td class="white" id="FRB_2_2" _isdisabled="" width="15%">
                        &nbsp;
                    </td>
                </tr>
                <tr class="bgrd">
                    <td style="background-color: rgb(255, 255, 255); border-right: medium none; padding: 0px 4px 0px 0px;">
                        &nbsp;
                    </td>
                    <td class="textBold" width="15%">
                        Business-Kazakhstan
                    </td>
                    <td class="wrap" id="FN_3" width="55%">
                        Нормальный тариф бизнес класса с некоторыми ограничениями <a href="javascript:fareFamilyDescriptionPopUp.redirectToAnExternalPopUp('http://www.airastana.com/int/ru/Fare-Family-Business-Kazakhstan.aspx');">
                            Дополнительная информация</a>
                    </td>
                    <td class="white" id="FRB_1_3" _isdisabled="false" width="15%">
                        <input id="RB3" name="FamilyButton" value="3|1" onclick="javascript:FDFF.selectRecommendationSet('3', true,'3', 'FRB_1_3',false);"
                            type="radio">
                        89&nbsp;557 KZT
                    </td>
                    <td class="white" id="FRB_2_3" _isdisabled="false" width="15%">
                        <input name="FamilyButton" value="4|2" onclick="javascript:FDFF.selectRecommendationSet('4', true,'3', 'FRB_2_3',false);"
                            type="radio">
                        93&nbsp;951 KZT
                    </td>
                </tr>
                <tr class="">
                    <td style="background-color: rgb(255, 255, 255); border-right: medium none; padding: 0px 4px 0px 0px;">
                        &nbsp;
                    </td>
                    <td class="textBold" width="15%">
                        Business
                    </td>
                    <td class="wrap" id="FN_4" width="55%">
                        Нормальный тариф бизнес класса без ограничений. Почувствуйте настоящий комфорт!
                        <a href="javascript:fareFamilyDescriptionPopUp.redirectToAnExternalPopUp('http://www.airastana.com/int/ru/Fare-Family-Business.aspx');">
                            Дополнительная информация</a>
                    </td>
                    <td class="white" id="FRB_1_4" _isdisabled="false" width="15%">
                        <input id="RB4" name="FamilyButton" value="5|1" onclick="javascript:FDFF.selectRecommendationSet('5', true,'4', 'FRB_1_4',false);"
                            type="radio">
                        98&nbsp;345 KZT
                    </td>
                    <td class="white" id="FRB_2_4" _isdisabled="" width="15%">
                        &nbsp;
                    </td>
                </tr>
            </tbody>
        </table>
    </div>
</body>
</html>

1 个答案:

答案 0 :(得分:1)

你可以尝试这样的事情,也许会有所帮助

       HtmlDocument doc = new HtmlDocument();
        doc.LoadHtml(//your html document);
        foreach (HtmlNode div in doc.DocumentNode.SelectNodes("//div[@class='divTableBodyText']")){
        foreach (HtmlNode table in div.DocumentNode.SelectNodes("table")) {
          foreach (HtmlNode tbody in div.DocumentNode.SelectNodes("tbody")) {
            foreach (HtmlNode row in tbody.SelectNodes("tr")) {
                foreach (HtmlNode cell in row.SelectNodes("td")) {
                    Console.WriteLine(cell.InnerText);
                }
            }
        }
     }
}