[C#基础实例]指定地址解析图片并下载

需求:查找页面图片并下载至本地;

实现:

首先:读取通过网络html内容,并用正则表达式查找图片地下。

其次:使用WebRequest.Create创建图片请求。

最后:把获取图片网络流数据通过FileStream创建本地文件并写入数据。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.IO;
using System.Text.RegularExpressions;

namespace StreamDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            string url = "http://www.wzfzl.cn/fzl/mm/2013/0429/7092.html";

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Timeout = 5000;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream s = response.GetResponseStream();

            StreamReader sr = new StreamReader(s, Encoding.GetEncoding("gb2312"), true);
            string html = sr.ReadToEnd();

            //Console.Write(html);

            // 定义正则表达式用来匹配 img 标签
            Regex regImg = new Regex(@"<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""‘]?[\s\t\r\n]*(?<imgUrl>[^\s\t\r\n""‘<>]*)[^<>]*?/?[\s\t\r\n]*>", RegexOptions.IgnoreCase);

            // 搜索匹配的字符串
            MatchCollection matches = regImg.Matches(html);

            int foreachIndex = 1;
            foreach (Match match in matches)
            {
                string imageUrl = "http://www.wzfzl.cn/" + match.Groups["imgUrl"].Value;
                if (imageUrl.IndexOf("uploads") > 0)
                {
                    download(imageUrl, foreachIndex);
                }
                foreachIndex++;
            }
            sr.Close();
            sr.Dispose();

            Console.ReadKey();
        }

        /// <summary>
        /// 下载图片
        /// </summary>
        /// <param name="imageUrl"></param>
        /// <param name="index"></param>
        static void download(string imageUrl, int index)
        {
            string filename = DateTime.Now.Second.ToString() + new Random().Next();
            string filepath = @"F:\uploads\" + filename + "_" + index + ".jpg";

            //FileStream FileMode.OrenOrCreate 使用写模式可以省略下面创建文件语句
            //if (!File.Exists(filepath))
            //{
               // File.Create(filepath).Dispose();  //创建文件并关闭创建对象资源。
            //}           

            //请求图片
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(imageUrl);
            request.Timeout = 5000; //请求超时时间
            request.Method = "GET";
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream s = response.GetResponseStream();  

            //创建文件并写入数据
            FileStream fs = new FileStream(filepath, FileMode.OpenOrCreate, FileAccess.Write);
            byte[] buffer = new byte[1024];
            while (true)
            {
                int r = s.Read(buffer, 0, buffer.Length);
                if (r == 0)
                {
                    break;
                }
                fs.Write(buffer, 0, r);
            }
            fs.Close();
            fs.Dispose();
            response.Close();

            Console.Write("Success : ");
            Console.WriteLine(imageUrl);

        }
    }
}

  

运行效果如下:

时间: 2024-11-01 18:51:43

[C#基础实例]指定地址解析图片并下载的相关文章

Python爬虫获取图片并下载保存至本地的实例

今天小编就为大家分享一篇Python爬虫获取图片并下载保存在本地的实例,具有很好的参考价值,希望对大家有所帮助.一起来看看吧! 1.抓取煎蛋网上的图片 2.代码如下 * * * import urllib.request import os def url_open(url): req=urllib.request.Request(url) req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.3; WOW64; rv:51.0) Geck

Android开发之异步获取并下载网络资源-下载图片和下载文本内容

在android网络开发过程中,经常需要获取网络资源,比如下载图片,下载文本文件内容等,这个时候就需要http请求来获取相应的网络资源.首先看看实例效果图:              下载图片截图                                                                                                下载文本文件内容截图 下面介绍如何来实现这样的开发: (1)从指定的URL获取对应的流 既然要获取网络资源,那么

自己动手写工具:百度图片批量下载器

开篇:在某些场景下,我们想要对百度图片搜出来的东东进行保存,但是一个一个得下载保存不仅耗时而且费劲,有木有一种方法能够简化我们的工作量呢,让我们在离线模式下也能爽爽地浏览大量的美图呢?于是,我们想到了使用网络抓取去帮我们去下载图片,并且保存到我们设定的文件夹中,现在我们就来看看如何来设计开发一个这样的图片批量下载器. 一.关于网络抓取与爬虫 网络蜘蛛的主要作用是从Internet上不停地下载网络资源.它的基本实现思想就是通过一个或多个入口网址来获取更多的URL,然后通过对这些URL所指向的网络资

网页设计Dreamweaver网页制作 商业网站建设案例课程 ASP.NET基础实例教程 淘宝开店教程

热门推荐电脑办公计算机基础知识教程 Excel2010基础教程 Word2010基础教程 PPT2010基础教程 五笔打字视频教程 Excel函数应用教程 Excel VBA基础教程 WPS2013表格教程 更多>平面设计PhotoshopCS5教程 CorelDRAW X5视频教程 Photoshop商业修图教程 Illustrator CS6视频教程 更多>室内设计3Dsmax2012教程 效果图实例提高教程 室内设计实战教程 欧式效果图制作实例教程 AutoCAD2014室内设计 Aut

python爬虫实战——5分钟做个图片自动下载器

python爬虫实战--图片自动下载器 制作爬虫的基本步骤 顺便通过这个小例子,可以掌握一些有关制作爬虫的基本的步骤. 一般来说,制作一个爬虫需要分以下几个步骤: 分析需求(对,需求分析非常重要,不要告诉我你老师没教你) 分析网页源代码,配合F12(没有F12那么乱的网页源代码,你想看死我?) 编写正则表达式或者XPath表达式(就是前面说的那个神器) 正式编写python爬虫代码 效果 运行: 恩,让我输入关键词,让我想想,输入什么好呢?好像有点暴露爱好了. 回车 好像开始下载了!好赞!,我看

网页设计 Dreamweaver网页制作 商业网站建设案例课程 ASP.NET基础实例教程 淘宝开店教程 更多&gt;

热门推荐电脑办公计算机基础知识教程 Excel2010基础教程 Word2010基础教程 PPT2010基础教程 五笔打字视频教程 Excel函数应用教程 Excel VBA基础教程 WPS2013表格教程 更多>平面设计PhotoshopCS5教程 CorelDRAW X5视频教程 Photoshop商业修图教程 Illustrator CS6视频教程 更多>室内设计3Dsmax2012教程 效果图实例提高教程 室内设计实战教程 欧式效果图制作实例教程 AutoCAD2014室内设计 Aut

实例:如何使用 Netty 下载文件

本实例主要参考的是官网的examples:点击这里 使用场景:客户端向Netty请求一个文件,Netty服务端下载指定位置文件到客户端. 本实例使用的是Http协议,当然,可以通过简单的修改即可换成TCP协议. 需要注意本实例的关键点是,为了更高效的传输大数据,实例中用到了ChunkedWriteHandler编码器,它提供了以zero-memory-copy方式写文件. 第一步:先写一个HttpFileServer package NettyDemo.file.server; import i

TypeScript进阶开发——ThreeJs基础实例,从入坑到入门

前言 我们前面使用的是自己编写的ts,以及自己手动引入的jquery,由于第三方库采用的是直接引入js,没有d.ts声明文件,开发起来很累,所以一般情况下我们使用npm引入第三方的库,本文记录使用npm,typescript开发threejs3D项目,搭建基础实例,为以后开发具体业务做准备 项目结构   依旧是熟悉的SpringBoot项目,不同以往的是使用了npm管理工具来下载依赖js库,类似maven,同时为了解决typescript编译后引入npm库的路径有问题,导致浏览器报错的问题,我们

Android 解决图片大量下载:软引用必须懂4点

Android 解决图片大量下载:软引用必须懂4点 可能对于Android开发者来说,软引用这个词有的会不是很熟悉,软引用在Java开发中用的比较多,但是,在Android开发中引用软引用,会给我们解决很多难题. AD: 1.对象的强.软.弱和虚引用 为了能更加灵活控制对象的生命周期,需要知道对象引用的4中级别,由高到低依次为 :强引用.软引用.弱引用和虚引用 备注: 这四种的区别: ⑴强引用(StrongReference) 强引用是使用最普遍的引用.如果一个对象具有强引用,那垃圾回收器绝不会