用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();}