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


 

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值