C# 程序爬取指定网页(可以在后台修改网页地址和xpath)图片

本程序爬取指定的网页图片 然后上传到程序修改桌面背景。修改桌面背景的代码可以在这下载:https://download.csdn.net/download/qq_35319925/10416245。(此文章限对于新手和专研C#爬虫技术的人。写的不好,请各位包涵。)

  这篇主要写C#爬虫原理 以下就是效果图。

 

原理:把下载的网页html转为xml格式然后利用xpath的正则表达式爬取需要的数据最后把爬取的数据显示出来。

 代码:

try
            {
//爬取网页图片代码:
                listView1.Items.Clear();
                HtmlWeb webClient = new HtmlWeb();
                HtmlAgilityPack.HtmlDocument doc = webClient.Load(this.textBox1.Text); //下载指定路径的html


                //这段运行是ok   注释:防止htmlAgilitypack输出乱码
                //string htmlurl = zhkj.httpdown.openweb(this.textBox1.Text, "", "utf-8");
                //HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
                //FileStream fs = new FileStream(Application.StartupPath + "//outhtml.html", FileMode.Create, FileAccess.Write);
                //StreamWriter sw = new StreamWriter(fs, Encoding.Default);
                //sw.Write(htmlurl);
                //sw.Close();
                //fs.Close();
              
                //doc.Load(Application.StartupPath + "//outhtml.html");

                div[@class='lb_box']/dl   输出图片名、日期等其他信息
                //HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//div[@class='lb_box']/dl/dd");
                //foreach (HtmlNode item in nodes)
                //{
                //    Console.WriteLine(item.InnerText.ToString());
                //}
                //图片网站路径: http://pic.yesky.com/c/6_20771_1.shtml  //爬取的xpath:  //div[@class='lb_box']/dl//img
                List<string> listalt = new List<string>();
                List<string> listhref = new List<string>();
                HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//li[@class='photo-list-padding']//a");
//爬取到数据
                foreach (HtmlNode item in nodes)
                {
                    listhref.Add(item.Attributes["href"].Value);
                }
                nodes = doc.DocumentNode.SelectNodes("//li[@class='photo-list-padding']//a//img");
                foreach (HtmlNode item in nodes)
                {
                    listalt.Add(item.Attributes["alt"].Value);
                }
显示数据
                for (int i = 0; i < listalt.Count; i++)
                {
                    ListViewItem listViewItem = new ListViewItem();
                    listViewItem.SubItems[0].Text =listalt[i].ToString();
                    listViewItem.SubItems.Add(listhref[i].ToString());
                    listView1.Items.Add(listViewItem);
                }
            }
            catch 
            {
            }

若在网上下载HtmlAgilityPack插件时会导致下过来的html中文乱码,这是因为HtmlAgilityPack没有转码为Encoding.default导致的,如果不知道怎样修改HtmlAgilityPack插件可以选择使用注释内容的代码。或者可以在这个里面下载HtmlAgilityPack.dll    https://download.csdn.net/download/qq_35319925/10688398

 完成上面的差不多就完成了整个程序,下面的是上一页和下一页的代码:


//上一页
 if (pagenumber == 1)
            {
                return;
            }
            pagenumber--;
            if (urltypename != null)
                this.textBox1.Text = "http://desk.zol.com.cn/" + urltypename + "/1920x1080/" + pagenumber + ".html";
            else
                this.textBox1.Text = "http://desk.zol.com.cn/fengjing/1920x1080/" + pagenumber + ".html";
            button1_Click(null,null);


//下一页代码

pagenumber++;
            if (urltypename != null)
                this.textBox1.Text = "http://desk.zol.com.cn/" + urltypename + "/1920x1080/" + pagenumber + ".html";
            else
                this.textBox1.Text = "http://desk.zol.com.cn/fengjing/1920x1080/" + pagenumber + ".html";
            button1_Click(null, null);

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值