用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版权协议,转载请附上原文出处链接和本声明。