asp.net采集图像图片资源的具体方法

来源:爱站网时间:2020-05-29编辑:网友分享
asp.net开发的时候通常需要采集图片的资源,而这个操作方法,大家了解多少呢?而对于庞大的图像数据是很枯草无味的,别着急,今天爱站技术频道带大家进入下文细细讲解,一起看看我们的解说吧!

asp.net开发的时候通常需要采集图片的资源,而这个操作方法,大家了解多少呢?而对于庞大的图像数据是很枯草无味的,别着急,今天爱站技术频道带大家进入下文细细讲解,一起看看我们的解说吧!

/// 
  /// 下载指定URL下的所有图片
  /// 
  public class WebPageImage
  {
    /// 
    /// 获取网页中全部图片
    /// 
    /// 网页地址
    /// 网页编码,为空自动判断
    /// 全部图片显示代码
    public string getImages(string url, string charSet)
    {
      string s = getHtml(url, charSet);
      return getPictures(s, url);
    }

    /// 
    /// 获取网页中全部图片
    /// 
    /// 网址
    /// 全部图片代码
    public string getImages(string url)
    {
      return getImages(url, "");
    }

    string doman(string url)
    {
      Uri u = new Uri(url);
      return u.Host;
    }

    /// 
    /// 获取网页内容
    /// 
    /// 网站地址
    /// 目标网页的编码,如果传入的是null或者"",那就自动分析网页的编码 
    /// 
    string getHtml(string url, string charSet)
    {
      WebClient myWebClient = new WebClient();
      //创建WebClient实例myWebClient 
      // 需要注意的: 
      //有的网页可能下不下来,有种种原因比如需要cookie,编码问题等等 
      //这是就要具体问题具体分析比如在头部加入cookie 
      // webclient.Headers.Add("Cookie", cookie); 
      //这样可能需要一些重载方法。根据需要写就可以了 

      //获取或设置用于对向 Internet 资源的请求进行身份验证的网络凭据。 
      myWebClient.Credentials = CredentialCache.DefaultCredentials;
      //如果服务器要验证用户名,密码 
      //NetworkCredential mycred = new NetworkCredential(struser, strpassword); 
      //myWebClient.Credentials = mycred; 
      //从资源下载数据并返回字节数组。(加@是因为网址中间有"/"符号) 
      byte[] myDataBuffer = myWebClient.DownloadData(url);
      string strWebData = Encoding.Default.GetString(myDataBuffer);

      //获取网页字符编码描述信息 
      Match charSetMatch = Regex.Match(strWebData, "]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?[^\s\t\r\n""']*)[^]*?/?[\s\t\r\n]*>");
      string s = string.Empty;
      for (int i = 0; i " + Environment.NewLine;
      }
      return s;
    }

    /// 
    /// 图片实体
    /// 图片文件属性处理类
    /// 
    public class pictures
    {
      public pictures(string strHtml, string baseUrl)
      {
        _html = strHtml;
        Uri u1 = new Uri(baseUrl);
        _doman = u1.Host;
        _baseUrl = u1.Scheme + "://" + _doman;
        setSrc();
      }

      private string _html = string.Empty;
      private string _baseUrl = string.Empty;
      private string _doman = string.Empty;

      public string GetHtml
      {
        get { return _html; }
      }

      public string Alt
      {
        get
        {
          return GetAttribute("alt")[0];
        }
      }

      public string Src
      {
        get
        {
          string s = GetAttribute("src")[0];
          return s;
        }
      }

      /// 
      /// 根据基路径把相对路径转换成绝对径
      /// 
      /// 基础路径
      /// 待转换的相对路径
      /// 绝对路径
      public string absUrl(string baseUrl, string u)
      {
        Uri ub = new Uri(baseUrl);
        Uri ua = new Uri(ub, u);
        return ua.AbsoluteUri;
      }

      private void setSrc()
      {
        string strPattern = @"src[\s\t\r\n]*=[\s\t\r\n]*[""']?\S+[""']?";
        string src = GetAttribute("src")[0].ToLower();
        if (!(src.IndexOf("http://") == 0 || src.IndexOf("https://") == 0) && _baseUrl.Length > 10)
        {
          src = absUrl(_baseUrl, src);
          string s = "src=\"" + src + "\"";
          _html = Regex.Replace(_html, strPattern, s);
        }
      }

      /// 
      /// 获取HTML代码中标签属性
      /// 
      /// HTML代码
      /// 属性名称
      /// 属性值集合
      private string[] GetAttribute(string strAttributeName)
      {
        List lstAttribute = new List();
        string strPattern = string.Format(
          @"{0}[\s\t\r\n]*=[\s\t\r\n]*[""']?\S+[""']?",
          strAttributeName
          );
        MatchCollection matchs = Regex.Matches(_html, strPattern, RegexOptions.IgnoreCase);
        foreach (Match m in matchs)
        {
          lstAttribute.Add(m.Value.Split('=')[1].Replace("\"", "").Replace("'", ""));
        }
        if (lstAttribute.Count == 0) lstAttribute.Add("");
        return lstAttribute.ToArray();
      }
    }
  }

调用:

new WebPageImage().getImages(http://www.sina.com)

结果:

好了,爱站技术频道今天就和大家说到这里,想必大家都清楚asp.net采集图像图片资源的具体方法,如果想获得更多的专业信息,欢迎来到js.aizhan.com。

上一篇:ASP.NET实现单点登陆(SSO)适用于多种情况

下一篇:asp.net生成字母和数字混合图形验证码

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载