当前位置:  编程技术>.net/c#/asp.net

c#实现网页图片提取工具代码分享

    来源: 互联网  发布时间:2014-10-26

    本文导语:  代码如下:public Array MatchHtml(string html,string com)       {           List urls = new List();           html = html.ToLower();           //获取SRC标签中的URL           Regex regexSrc = new Regex("src="/tech-dotnet/[^/index.html"]*[(.jpg)(.png)(.gif)(.bmp)(.ico)...

代码如下:

public Array MatchHtml(string html,string com)
       {
           List urls = new List();
           html = html.ToLower();
           //获取SRC标签中的URL
           Regex regexSrc = new Regex("src="/tech-dotnet/[^/index.html"]*[(.jpg)(.png)(.gif)(.bmp)(.ico)]"");
           foreach(Match m in regexSrc.Matches(html))
           {
               string src = m.Value;
               src = src.Replace("src="/tech-dotnet/,/index.html"").Replace(""","");
               if (!src.Contains("http"))
                   src = com + src;
               if(!urls.Contains(src))
               urls.Add(src);
           }
           //获取HREF标签中URL
           Regex regexHref = new Regex("href="/tech-dotnet/[^/index.html"]*[(.jpg)(.png)(.gif)(.bmp)(.ico)]"");
           foreach (Match m in regexHref.Matches(html))
           {
               string href = m.Value;
               href = href.Replace("href="/tech-dotnet/,/index.html"").Replace(""", "");
               if (!href.Contains("http"))
                   href = com + href;
               if(!urls.Contains(href))
               urls.Add(href);
           }
           return urls.ToArray();
       }

代码如下:

[DllImport("kernel32.dll")]
       static extern bool SetConsoleMode(IntPtr hConsoleHandle, int mode);
       [DllImport("kernel32.dll")]
       static extern bool GetConsoleMode(IntPtr hConsoleHandle, out int mode);
       [DllImport("kernel32.dll")]
       static extern IntPtr GetStdHandle(int handle);
       const int STD_INPUT_HANDLE = -10;
       const int ENABLE_QUICK_EDIT_MODE = 0x40 | 0x80;
       public static void EnableQuickEditMode()
       {
           int mode; IntPtr handle = GetStdHandle(STD_INPUT_HANDLE);
           GetConsoleMode(handle, out mode);
           mode |= ENABLE_QUICK_EDIT_MODE;
           SetConsoleMode(handle, mode);
       }
       static void Main(string[] args)
       {
           EnableQuickEditMode();
           int oldCount = 0;
           Console.Title = "TakeImageFromInternet";
           string path = "E:\Download\loading\";
           while (true)
           {
               Console.Clear();
               string countFile = "E:\CountFile.txt";//用来计数的文本,以至于文件名不重复
               int cursor = 0;
               if (File.Exists(countFile))
               {
                   string text = File.ReadAllText(countFile);
                   try
                   {
                       cursor =oldCount = Convert.ToInt32(text);//次数多了建议使用long
                   }
                   catch { }
               }
               Console.Write("please input a url:");
               string url = "http://www.baidu.com/";
               string temp = Console.ReadLine();
               if (!string.IsNullOrEmpty(temp))
                   url = temp;
               Match mcom = new Regex(@"^(?i)http://(w+.){2,3}(com(.cn)?|cn|net)b").Match(url);//获取域名
               string com = mcom.Value;
               //Console.WriteLine(mcom.Value);
               Console.Write("please input a save path:");
               temp = Console.ReadLine();
               if (Directory.Exists(temp))
                   path = temp;
               Console.WriteLine();
               WebClient client = new WebClient();
               byte[] htmlData = null;
               htmlData = client.DownloadData(url);
               MemoryStream mstream = new MemoryStream(htmlData);
               string html = "";
               using (StreamReader sr = new StreamReader(mstream))
               {
                   html = sr.ReadToEnd();
               }
               Array urls = new MatchHtmlImageUrl().MatchHtml(html,com);

               foreach (string imageurl in urls)
               {
                  Console.WriteLine(imageurl);
                   byte[] imageData = null;
                   try
                   {
                       imageData = client.DownloadData(imageurl);
                   }
                   catch { }
                   if (imageData != null && imageData.Length>0)
                       using (MemoryStream ms = new MemoryStream(imageData))
                       {
                           try
                           {

                               string ext = Aping.Utility.File.FileOpration.ExtendName(imageurl);
                               ImageFormat format = ImageFormat.Jpeg;
                               switch (ext)
                               {
                                   case ".jpg":
                                       format = ImageFormat.Jpeg;
                                       break;
                                   case ".bmp":
                                       format = ImageFormat.Bmp;
                                       break;
                                   case ".png":
                                       format = ImageFormat.Png;
                                       break;
                                   case ".gif":
                                       format = ImageFormat.Gif;
                                       break;
                                   case ".ico":
                                       format = ImageFormat.Icon;
                                       break;
                                   default:
                                       continue;
                               }
                               Image image = new Bitmap(ms);
                               if (Directory.Exists(path))
                                   image.Save(path + "\" + cursor + ext, format);
                           }
                           catch(Exception ex) { Console.WriteLine(ex.Message); }
                       }
                   cursor++;
               }
               mstream.Close();
               File.WriteAllText(countFile, cursor.ToString(), Encoding.UTF8);
               Console.WriteLine("take done...image count:"+(cursor-oldCount).ToString());
           }           
       }


    
 
 

您可能感兴趣的文章:

  • c#通过委托delegate与Dictionary实现action选择器代码举例
  • C#实现获取枚举中元素个数的方法
  • C#实现自定义双击事件
  • C#键盘输入回车键实现点击按钮效果的方法
  • C#实现获取一年中是第几个星期的方法
  • C#实现Datatable排序的方法
  • C#实现装箱与拆箱操作简单实例
  • 解决C#中WebBrowser的DocumentCompleted事件不执行的实现方法
  • C#下实现创建和删除目录的实例代码
  • 使用C#实现在屏幕上画图效果的代码实例
  • C#实现过滤html标签并保留a标签的方法
  • c#实现TextBox只允许输入数字
  • C# Winform 整个窗口拖动的实现代码
  • c# ListView实现双击Item事件的变通方法
  • C#实现随鼠标移动窗体实例
  • C#中的FileUpload 选择后的预览效果具体实现
  • C# 窗体隐藏及任务管理器中禁止关闭的实现代码
  • C#的锯齿数组以及C++实现代码
  • C#格式化文件大小的实现代码
  • C#怎样才能实现窗体最小化到托盘呢?
  • C# char类型字符转换大小写的实现代码
  • 如何实现对网络协议栈(TCP/IP)各层数据的提取?!
  • 用正则实现提取代码内容的代码
  • 在MySQL如何实现如:select top 2 * from board; 这样的提取前N条记的功能?
  • 请问如何实现提取系统设置的环境变量?谢谢先。
  • 用shell脚本编程,怎么实现提取一个文件的一段内容,而且位置不定,行数不定
  • python实现网页链接提取的方法分享
  • MSSQL 提取汉字实现语句
  • 使用pdfbox实现pdf文本提取和合并功能示例
  • 正则表达式提取网址、标题、图片等一例(.Net Asp Javascript/Js)的实现
  • 如何实现JSP从Access数据库中提取其中的数据?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • 请问高手:Ctrl+Alt+F1~F8可以切换虚拟终端,这个代码是在哪儿实现的?我搞不懂,最好指点源代码大概位置。
  • 通过javascript库JQuery实现页面跳转功能代码
  • c++ 连接两个字符串实现代码 实现类似strcat功能
  • c语言判断某一年是否为闰年的各种实现程序代码
  • servlet中怎么实现java代码和html代码的分离????
  • php实现socket实现客户端和服务端数据通信源代码
  • 如何用代码手工实现激活事件发生
  • C#/.NET字符串加密和解密实现(AES和RSA代码举例)
  • python 实现文件的递归拷贝实现代码
  • Linux下c函数dlopen实现加载动态库so文件代码举例
  • 代码实现Radius服务模拟的问题,熟悉Radius服务的大虾请进!
  • Session id实现通过Cookie来传输方法及代码参考
  • JQuery实现元素屏幕居中显示的代码
  • JavaScript实现页面跳转的几种方法(参考代码)
  • css创意ul+li实现的细线表格实现代码
  • java实现判断字符串是否全是数字的四种方法代码举例
  • winform下实现win7 Aero磨砂效果实现代码
  • windows下c/c++读写锁实现原理及代码参考
  • jQuery 表格隔行换色 鼠标高亮行变色的实现代码
  • Linux 共享内存介绍及实现代码
  • 如何实现代码的提示
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • socket实现多文件并发传输,求助多线程实现问题?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • interface 到底有什么用???实现接口,怎么实现??
  • flash AS3反射实现(describeType和getDefinitionByName)
  • 怎么用Jsp实现在页面实现树型结构?
  • boost unordered_map和std::list相结合的实现LRU算法
  • windows 下的PortTunnel 在linux下怎么实现?或者相应的已经实现的软件?端口映射
  • 使用java jdk中的LinkedHashMap实现简单的LRU算法


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3