使用c#中的HTMLAgilityPack从HTML中提取特定数据

时间:2014-10-09 08:56:29

标签: c# html parsing webclient html-agility-pack

我一直试图通过提供HTML字符串从网站中提取数据。 我做了一些研究,发现我必须使用HtmlAgilityPack;然而, 我无法弄清楚如何将这些例子应用到我的案例中。

我做过不同的测试,但似乎都没有。

网页示例可能是 http://www.trivago.com/?aDateRange[arr]=2014-11-02&aDateRange[dep]=2014-11-03&iRoomType=7&iPathId=34741&iGeoDistanceItem=0&iViewType=0&bIsSeoPage=false&bIsSitemap=false&

我只需要提取联系人数据, 地址,电话,官方主页链接和标题 列表中的元素。

我尝试使用Firebug和类结构移动源代码 得到这些数据如下:

class="no-touch"
    class="web10152"
        class="page_wrapper"
            class="main_content"
                class="main"
                    class="centercol content"
                        class="content"
                            class="container_itemlist itemlist_simplified"
                                    class="itemlist hotellist group component"  // Has a List of each item

// Item (undernode of itemlist hotellist group component)                               
class="hotel item bookmarkable historisable"        //item main class

    // Path to get title
    class="cf item_wrapper"
        class="item_prices"
            <h3 title="ITEM TITLE" </h3>

    // Path to get contact info
    class="slideout_wrapper component expand"
        class="slideout_content_container"
            class="slideout_content info item_info js_trivago_info active"
                class="item_info_block contact"     // Contains info
                    <em> ADDRESS INFORMATION </em>
                    <em> TELEPHONE INFO </em>
                    class="partnerHomepageLink link"
                        //Contains Link info

我不知道如何与HtmlAgilityPack进行沟通。 这是我尝试的最后一件事......

HtmlAgilityPack.HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(page);
try
{
    var table = doc.DocumentNode.SelectSingleNode("//h3[@class='jsheadline js_slideout_trigger js_trackable']/title");

    var table1 = doc.DocumentNode.SelectSingleNode("//div[@class='item_info_block contact']");
    var ele = table1.Elements("em");
}
catch { Program.ChangeColor(Program.TextColors.PROGRAM_ERROR);           
    Console.WriteLine("\nError Report: Failed to parse page!"); 
}

我怎样才能做到这一点?

0 个答案:

没有答案