asp.net采集网页图片的具体方法

在网上找了下大多都是通过字符串操作找出img标签,这种方式操作起来比较麻烦,而且代码看起来比较累。这里我用的方法是通过WebBrowser来加载一个页面,然后HTMLDocument类来操作省去了字符串操作的步骤,直接调用GetElementsByTagName把所有图片地址返回到一个HtmlElementCollection对象里。
代码如下:


代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Net;
using System.IO;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
    public class GatherPic
    {
        private string savePath;
        private string getUrl;
        private WebBrowser wb;
        private int iImgCount;
        //初始化参数
        public GatherPic(string sWebUrl, string sSavePath)
        {
            this.getUrl = sWebUrl;
            this.savePath = sSavePath;
        }
        //开始采集
        public bool start()
        {
            if (getUrl.Trim().Equals(""))
            {
                MessageBox.Show("哪来的虾米连网址都没输!");
                return false;
            }
            this.wb = new WebBrowser();
            this.wb.Navigate(getUrl);
            //委托事件
            this.wb.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(DocumentCompleted);
            return true;
        }
        //WebBrowser.DocumentCompleted委托事件
        private void DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            //页面里框架iframe加载完成不掉用SearchImgList()
            if (e.Url != wb.Document.Url) return;
            SearchImgList();
        }
        //检查出所有图片并采集到本地
        public void SearchImgList()
        {
            string sImgUrl;
            //取得所有图片地址
            HtmlElementCollection elemColl = this.wb.Document.GetElementsByTagName("img");
            this.iImgCount = elemColl.Count;
            foreach (HtmlElement elem in elemColl)
            {
                sImgUrl = elem.GetAttribute("src");
                //调用保存远程图片函数
                SaveImageFromWeb(sImgUrl, this.savePath);
            }
        }
        //保存远程图片函数
        public int SaveImageFromWeb(string imgUrl, string path)
        {
            string imgName = imgUrl.ToString().Substring(imgUrl.ToString().LastIndexOf("/") + 1);
            path = path + "\\" + imgName;
            string defaultType = ".jpg";
            string[] imgTypes = new string[] { ".jpg", ".jpeg", ".png", ".gif", ".bmp" };
            string imgType = imgUrl.ToString().Substring(imgUrl.ToString().LastIndexOf("."));
            foreach (string it in imgTypes)
            {
                if (imgType.ToLower().Equals(it))
                    break;
                if (it.Equals(".bmp"))
                    imgType = defaultType;
            }
            try
            {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(imgUrl);
                request.UserAgent = "Mozilla/6.0 (MSIE 6.0; Windows NT 5.1; Natas.Robot)";
                request.Timeout = 10000;
                WebResponse response = request.GetResponse();
                Stream stream = response.GetResponseStream();
                if (response.ContentType.ToLower().StartsWith("image/"))
                {
                    byte[] arrayByte = new byte[1024];
                    int imgLong = (int)response.ContentLength;
                    int l = 0;
                    // CreateDirectory(path);
                    FileStream fso = new FileStream(path, FileMode.Create);
                    while (l < imgLong)
                    {
                        int i = stream.Read(arrayByte, 0, 1024);
                        fso.Write(arrayByte, 0, i);
                        l += i;
                    }
                    fso.Close();
                    stream.Close();
                    response.Close();
                    return 1;
                }
                else
                {
                    return 0;
                }
            }
            catch (WebException)
            {
                return 0;
            }
            catch (UriFormatException)
            {
                return 0;
            }
        }
    }
}
//-----------------调用代码--------------------
GatherPic gatherpic = new GatherPic(“http://www.baidu.com”,"C:\test");
//请确保c:\下存在test路径
gatherpic.start()

(0)

相关推荐

  • asp.net c#采集需要登录页面的实现原理及代码

    首先说明:代码片段是从网络获取,然后自己修改.我想好的东西应该拿来分享. 实现原理:当我们采集页面的时候,如果被采集的网站需要登录才能采集.不管是基于Cookie还是基于Session,我们都会首先发送一个Http请求头,这个Http请求头里面就包含了网站需要的Cookie信息.当网站接收到发送过来的Http请求头时,会从Http请求头获取相关的Cookie或者Session信息,然后由程序来处理,决定你是否有权限访问当前页面. 好了,原理搞清楚了,就好办了.我们所要做的仅仅是在采集的时候(或者

  • 利用MSXML2.XmlHttp和Adodb.Stream采集图片

    利用MSXML2.XmlHttp和Adodb.Stream 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999/xhtml">  <

  • asp.net(c#)做一个网页数据采集工具

    通过这个软件一两天就完成了几千产品数据的录入,可见很多工作不是一味用人工去做,作为一个程序员,就是要让很多让那些经常做重复性的.繁琐的工作中的人解放出来.下面只是写了一些核心代码,而且采集必须要和对应网站相挂钩,作者:郑少群 复制代码 代码如下: //提取产品列表页中产品最终页的网页 private void button1_Click(object sender, EventArgs e) { if (textBox1.Text.Trim() == "" || textBox2.Te

  • PHP远程采集图片详细教程

    当我们需要采集网络上的某个网页内容时,如果目标网站上的图片做了防盗链的话,我们直接采集过来的图片在自己网站上是不可用的.那么我们使用程序将目标网站上的图片下载到我们网站服务器上,然后就可调用图片了. 本文将使用PHP实现采集远程图片功能.基本流程: 1.获取目标网站图片地址. 2.读取图片内容. 3.创建要保存图片的路径并命名图片名称. 4.写入图片内容. 5.完成. 我们通过写几个函数来实现这一过程. 函数make_dir()建立目录.判断要保存的图片文件目录是否存在,如果不存在则创建目录,并

  • asp.net采集页面上所有图像图片资源的具体方法

    有时我们需要采集一些信息到自己的数据库,本地磁盘,我们经常使用的是WebClient,WebRequest等等,今天主要说一下,对于一个URI地址,采集这个页面上所有的图像资源,下面是源代码,供大家参考,学习. /// <summary> /// 下载指定URL下的所有图片 /// </summary> public class WebPageImage { /// <summary> /// 获取网页中全部图片 /// </summary> /// <

  • asp.net采集网页图片的具体方法

    在网上找了下大多都是通过字符串操作找出img标签,这种方式操作起来比较麻烦,而且代码看起来比较累.这里我用的方法是通过WebBrowser来加载一个页面,然后HTMLDocument类来操作省去了字符串操作的步骤,直接调用GetElementsByTagName把所有图片地址返回到一个HtmlElementCollection对象里.代码如下: 复制代码 代码如下: using System;using System.Collections.Generic;using System.Linq;u

  • java截取网页图片的方法

    本文实例讲述了java截取网页图片的方法.分享给大家供大家参考.具体如下: 这是调用第三方控件,然后在读取图片文件存入数据库 public static int GetPic(String URL,String ADid){ String path=CatPath+"iecapt.exe"; Process pro = null; try { pro = Runtime.getRuntime().exec(path + " " + URL + " &quo

  • ASP.NET显示渐变图片实现方法

    先给大家来个最终效果: 实现效果,首先准备一张图片,高度为25pixel,宽度为1至3pixel渐变的图片.可以这里下载. 还要准备数据: Dictionary<int, int> Datas { get { Dictionary<int, int> d = new Dictionary<int, int>(); d.Add(1, 35); d.Add(2, 45); d.Add(3, 20); return d; } } ok,数据准备完了,在aspx里放三个Labe

  • JavaScript获取网页中第一个图片id的方法

    本文实例讲述了JavaScript获取网页中第一个图片id的方法.分享给大家供大家参考.具体如下: 下面的代码通过document.images获取网页中的所有图片,然后获取第一个图片的id属性 <!DOCTYPE html> <html> <body> <img id="klematis lilac" border="0" src="klematis.jpg" width="148"

  • asp .net实现给图片添加图片水印方法示例

    前言 本文主要给大家介绍的是asp .net实现给图片添加图片水印的方法,注意是图片水印,需要的朋友们可以参考学习,下面话不多说来看看详细的介绍吧. 方法如下 首先写好一个写入图片水印的类,先创建一个ImageWriter类库   (该类中有包含枚举类型和方法) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Co

  • asp.net为网页动态添加description描述信息的方法

    本文实例讲述了asp.net为网页动态添加description描述信息的方法.分享给大家供大家参考.具体分析如下: 这段代码可以修改网页的head区的description meta HtmlMeta desc = new HtmlMeta(); desc.Name = "Description"; desc.Content = "描述"; Page.Header.Controls.Add(desc); 希望本文所述对大家的asp.net程序设计有所帮助.

  • asp.net为网页动态添加关键词的方法

    本文实例讲述了asp.net为网页动态添加关键词的方法.分享给大家供大家参考.具体如下: 这段代码可以修改网页的keyword meta HtmlMeta keywords = new HtmlMeta(); keywords.Name = "keywords"; keywords.Content = "关键词"; Page.Header.Controls.Add(keywords); 希望本文所述对大家的asp.net程序设计有所帮助.

  • 分享PHP源码批量抓取远程网页图片并保存到本地的实现方法

    做为一个仿站工作者,当遇到网站有版权时甚至加密的时候,WEBZIP也熄火,怎么扣取网页上的图片和背景图片呢.有时候,可能会想到用火狐,这款浏览器好像一个强大的BUG,文章有版权,屏蔽右键,火狐丝毫也不会被影响. 但是作为一个热爱php的开发者来说,更多的是喜欢自己动手.所以,我就写出了下面的一个源码,php远程抓取图片小程序.可以读取css文件并抓取css代码中的背景图片,下面这段代码也是针对抓取css中图片而编写的. <?php header("Content-Type: text/ht

  • Python使用正则表达式抓取网页图片的方法示例

    本文实例讲述了Python使用正则表达式抓取网页图片的方法.分享给大家供大家参考,具体如下: #!/usr/bin/python import re import urllib #获取网页信息 def getHtml(url): page = urllib.urlopen(url) html = page.read() return html def getImg(html): #匹配网页中的图片 reg = r'src="(.*?\.jpg)" alt' imgre = re.com

  • JS获取网页图片name属性的方法

    本文实例讲述了JS获取网页图片name属性的方法.分享给大家供大家参考.具体如下: 下面的JS代码可以用来获取网页图片的name属性 <!DOCTYPE html> <html> <body> <img id="compman" name="compman" src="compman.gif" alt="Computerman" width="107" height

随机推荐