HtmlAgilityPack - 如何在大型网页中抓取<div>数据</div>

时间:2011-07-01 02:42:02

标签: c# web-applications html-agility-pack html-generation

我正在尝试从WEBPAGE中获取数据,<DIV>特定类<DIV class="personal_info">它有10个类似的<DIV> S并且具有相同的类“Personal_info”(如HTML代码所示)现在我想在每个网页中提取所有类别为10-15的Class personal_info的DIV。

<div class="personal_info"><span class="bold">Rama Anand</span><br><br> Mobile: 9916184586<br>rama_asset@hotmail.com<br> Bangalore</div>

做必要的我开始使用HTML AGILE PACK,正如堆栈溢出中的某些人所建议的那样 我一开始就陷入了HtmlAgilePack缺乏知识的自我bcoz我的C#代码就像这样

HtmlAgilityPack.HtmlDocument docHtml = new HtmlAgilityPack.HtmlDocument();
        HtmlAgilityPack.HtmlWeb docHFile = new HtmlWeb();

        docHtml = docHFile.Load("http://127.0.0.1/2.html");

然后如何进一步编码,以便可以抓取类别为“personal_info”的DIV数据...建议用例子表示赞赏

3 个答案:

答案 0 :(得分:2)

我现在无法检查,但不是:

var infos = from info in docHtml.DocumentNode.SelectNodes("//div[@class='personal_info']") select info; 

答案 1 :(得分:2)

要加载网址,您可以执行以下操作:

 var document = new HtmlAgilityPack.HtmlDocument(); 
 var url = "http://www.google.com";
 var request = (HttpWebRequest)WebRequest.Create(url);
 using (var responseStream =  request.GetResponse().GetResponseStream())
 {
   document.Load(responseStream, Encoding.UTF8);
 }

另请注意,有一个fork允许您在agility pack中使用jquery选择器。

IEnumerable<HtmlNode> myList = document.QuerySelectorAll(".personal_info");

http://yosi-havia.blogspot.com/2010/10/using-jquery-selectors-on-server-sidec.html

答案 2 :(得分:0)

Where在哪里发生了什么?

node.DescendantNodes().Where(node_it => node_it.Name=="div");

如果你想要top node(root)你使用page.DocumentNode作为“node”。