您的位置:首页 > Web前端 > HTML

通过HtmlAgilityPack实现网页信息抓取

2012-10-24 14:23 387 查看
1. 下载Html Agility Pack,解压保存到本地 下载地址: http://htmlagilitypack.codeplex.com/
void caijisoufun()
{
try
{

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
String str = "http://esf.wuxi.soufun.com/agent/agent/AloneHouseList.aspx?agentid=160148311&housetype=esf&price=&roomtype=&district=&page=1";
        
String htmlstr = fhttp2(str);//获取html页面的源文件
doc.LoadHtml(htmlstr);
HtmlNode navNode = doc.GetElementbyId("right");//获取id为right的节点
//print(navNode.InnerHtml);
HtmlNodeCollection categoryNodeList = navNode.SelectNodes("//div[1]/table/tr[1]/td[1]/a[1]"); //分析html结构

HtmlNode temp = null;

foreach (HtmlNode categoryNode in categoryNodeList)
{
temp = HtmlNode.CreateNode(categoryNode.OuterHtml);

String url = "http://esf.wuxi.soufun.com" + temp.Attributes["href"].Value;
println(url);//其实就是个Response.Write
String showstr = fhttp2(url);
HtmlAgilityPack.HtmlDocument doc2 = new HtmlAgilityPack.HtmlDocument();
doc2.LoadHtml(showstr);
HtmlNode cnode = doc2.GetElementbyId("wrap");
HtmlNode title = cnode.SelectSingleNode("//div[2]/div[1]/h1[1]/font[1]");
println(title.InnerText);//
//这里就可以做很多事情了,包括楼盘户型全部可以通过抓取获得信息,导入自己的数据库。
flush();
sleep(10);

//println(temp.Attributes["href"].Value);
}

}
catch (Exception ex)
{
println(ex);
}
}

String fhttp2(String url)
{
try
{
WebRequest rGet = WebRequest.Create(url);
WebResponse rSet = rGet.GetResponse();
Stream s = rSet.GetResponseStream();
StreamReader sr = new StreamReader(s, Encoding.GetEncoding("GB2312"));
StringBuilder sb = new StringBuilder();
String Str;

while ((Str = sr.ReadLine()) != null)
{
sb.Append(Str + "\n");
}

sr.Close();
s.Close();
rSet.Close();

return tostr(sb);
}
catch (Exception e)
{
return "";
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: