unity下载网页所有图片

用unity的c#脚本批量下载网页上的所有图片

1、将网页的html保存到本地
在网页上鼠标右击另存为如下图所示
保存html文件在这里插入图片描述
2、通过截取<img=“”>获取图片存储的地址
在这里插入图片描述
经过两个步骤之后就可以开始着手敲代码了

代码

html下载的本地地址和要保存的图片地址

 //保存在本地html文件
    string localityAddress = "file:///D:/emoji/emoji.html";
   
    //本地地址
    string filepath= "D:\\emoji\\image\\twitter\\";
    //按顺序加载图片
    int imgcount;
    //保存的图片链接
    List<string> androidimgur = new List<string>();
    

读取html数据并截取图片地址

   void Start()
    {
      string add=gethtml(localityAddress);
       StartCoroutine( GetImage(add));
    }
 /// <summary>
   /// 读取HTML数据
   /// </summary>
   /// <param name="url"></param>
   /// <returns></returns>
    private string gethtml(string url)
    {
        WebClient web = new WebClient();
        byte[] data = web.DownloadData(url);
        return Encoding.Default.GetString(data);
    }   
     //截取图片地址 数据过大可以用协程,数据量小可以不用直接用主程写
    IEnumerator GetImage(string info)
    {
        androidimgur.Clear();
        string startStr = @" <img class=""emoji twitter"" data-src=""";
        string endStr = @""">";
        string regex = "(?<=(" + startStr + "))[.\\s\\S]*?(?=(" + endStr + "))";
       //截取中间的图片地址
        MatchCollection matchCol = Regex.Matches(info, regex);
        if (matchCol.Count > 0)
            for (int i = 0; i < matchCol.Count; ++i)
            {
                androidimgur.Add(matchCol[i].Value);
            }
        DownLoadCtrl();
        yield return new WaitForSeconds(0);
    }

将截取的图片地址进行下载并存到本地

 //加载图片
    private IEnumerator DownLoadFirle(string url,UnityAction complete)
    {
        UnityWebRequest uwr = UnityWebRequest.Get(url);
        Debug.Log("链接地址:" + url);
        yield return uwr.SendWebRequest();
        if (uwr.isHttpError || uwr.isNetworkError)
        {
            Debug.Log(uwr.error);
        }
        else
        {
            while (!uwr.isDone)
                yield return null;
            byte[] data = uwr.downloadHandler.data;
            CreaFile(url, data);
        }
        complete();
    }
   /// <summary>
   /// 存本地
   /// </summary>
   /// <param name="url">网上图片的地址</param>
   /// <param name="bytes">字节流</param>
    private void CreaFile(string url,byte[]bytes)
    {
        string path = filepath;
       //找到图片地址的最后一个‘/’的位置来找到图片的名字
        int count = url.LastIndexOf(@"/");
        //命名规则按照网上图片的名字,也可以自定义
        string name = url.Substring(count + 1, url.Length-count - 1);               
        string dirpath = Path.GetDirectoryName(path);
        if (Directory.Exists(dirpath))
            Directory.CreateDirectory(dirpath);
        path += name;
        Stream sw=File.Create(path);
        sw.Write(bytes, 0, bytes.Length);
        sw.Close();
        sw.Dispose();
    }

版权声明:本文为weixin_39914304原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。