1.下载HtmlAgilityPack.dll并将其添加引用到项目中,然后在代码中声明引用。
下载地址:http://www.codeplex.com/htmlagilitypack
引用:
using
HtmlAgilityPack;
2.与上次不同的是,这里分析和抓取HTML节点中的数据不再是之前那种STRING字符串操作的方式,而是封装成一个HtmlDocument对象,通过HtmlDocument中的方法来索引你需要抓取HTML节点,进而取出节点中的值。
几种常用的方法
1、对于有ID的,可以使用
HtmlAgilityPack.HtmlDocument Doc = new HtmlAgilityPack.HtmlDocument();
Doc.LoadHtml(getHtmlDoc(Inurl, "GB2312"));
DOC.GetElementbyId(这里填入html源码中的ID);
2、获取所有的超链接:doc.DocumentNode.Descendants("a") name属性等于kw的input标签。
3、Doc.DocumentNode.SelectSingleNode("//div[@class='breadBar']"); 标示class属性为“breadBar”DIV的标签。
下面是下载某网站图片的一个方法,(具体什么网站,你们懂的,我就不说了)
private static void DownImage()
{
var web = new HtmlWeb();
for (int k = 1110; k <= 1204; k++)
{
for (int j = 632198; j <= 726237; j++)
{
string weburl = "某网站你们懂的" + k + "/" + j + ".html";
HtmlDocument doc = web.Load(weburl);
var titles = doc.DocumentNode.SelectNodes("//title");
var titleName = j.ToString();
if (titles != null && titles.Count > 0)
titleName = titles[0].InnerText;
HtmlNode node = doc.DocumentNode.SelectSingleNode("//div[@class='tpc_content']");
if (node == null)
{
continue;
}
foreach (HtmlNode child in node.SelectNodes("//input"))
{
if (child.Attributes["src"] == null)
continue;
string imgurl = child.Attributes["src"].Value;
DownLoadImg(imgurl, k + "", CleanInvalidFileName(titleName));
Console.WriteLine("正在下载:" + titleName + " " + imgurl);
}
}
}
}