利用HtmlAgilityPack抓取XX网站

      


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);
                    }
                }
            }
 
        }


 

 


 

你可能感兴趣的:(html,String,null,Class,input,div)