private void GetPic(string htmlCode,string OutPath)
{
string pattern = @"={1}[/w/W][^=]+?(.jpg|.bmp|.gif|.png|.jpeg)";
//string pattern = @"http:[^=/s]*(.jpg|.bmp|.gif|.png|.jpeg)";
RegexOptions options = RegexOptions.None;
Regex regex = new Regex(pattern, options);
MatchCollection matches = regex.Matches(htmlCode);
string CountPic = matches.Count;//取得所有图片数
foreach (Match match in matches)
{
string UrlPic = match.Value.Replace("=/"", "").Replace("='", ""); ;
try
{
ImgDownLoc.SaveImageFromWeb(UrlPic, OutPath, "");
}
catch (Exception e)
{
ImgDownLoc.WriteToLog(DateTime.Now.ToString()+":"+ match.Value+" "+e.Message.ToString());
}
}
}
下载图片
/// <summary>
/// C#获取图片并保存到本地C#获取图片并保存到本地 imgUrl图片路径,path输出路径,fileName文件名
/// </summary>
/// <param name="imgUrl">图片路径</param>
/// <param name="path">输出路径</param>
/// <param name="fileName">文件名 如果为空,取原名</param>
/// <returns></returns>
public static int SaveImageFromWeb(string imgUrl, string path, string fileName)
{
if (path.Equals("//"))
throw new Exception("未指定保存文件的路径");
string imgName = imgUrl.ToString().Substring(imgUrl.ToString().LastIndexOf("/") + 1);
string u = imgUrl.Substring(imgUrl.ToString().LastIndexOf("com/") + 4);
string pa = u.Substring(0, u.LastIndexOf("/") + 1);
path = path + "//" + pa;
if (path.Contains("////"))
{
path = path.Replace("////", "//");
path = path.Replace("/", "//");
}
try
{
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
}
catch (Exception e2)
{
WriteToLog(DateTime.Now.ToString()+ " 未得到的图片路径:" + imgUrl + " :" + e2.ToString()+"/r/n");
return 0;
}
string defaultType = ".jpg";
string[] imgTypes = new string[] { ".jpg", ".jpeg", ".png", ".gif", ".bmp" };
string imgType = imgUrl.ToString().Substring(imgUrl.ToString().LastIndexOf("."));
foreach (string it in imgTypes)
{
if (imgType.ToLower().Equals(it))
break;
if (it.Equals(".bmp"))
imgType = defaultType;//
}
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(imgUrl);
request.UserAgent = "Mozilla/6.0 (MSIE 6.0; Windows NT 5.1; Natas.Robot)";
request.Timeout = 40000;
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
if (response.ContentType.ToLower().StartsWith("image/"))
{
byte[] arrayByte = new byte[1024];
int imgLong = (int)response.ContentLength;
int l = 0;
if (fileName == "")
fileName = imgName;
FileStream fso = new FileStream(path + fileName, FileMode.Create);
while (l < imgLong)
{
int i = stream.Read(arrayByte, 0, 1024);
fso.Write(arrayByte, 0, i);
l += i;
}
fso.Close();
stream.Close();
response.Close();
return 1;
}
else
{
return 0;
}
}
catch (Exception e1)
{
WriteToLog(DateTime.Now.ToString() + " " + e1.ToString() + "/r/n");
return 0;
}
// return 1;
}
/// <summary>
/// 错误信息保存到D:/ErrLog/Err_Log.txt
/// </summary>
/// <param name="message"></param>
public static void WriteToLog(string message)
{
if (!Directory.Exists(@"D:/ErrLog"))
{
Directory.CreateDirectory(@"D:/ErrLog");
}
try
{
StreamWriter writer;
writer = File.AppendText(@"D:/ErrLog/Err_Log.txt");
writer.WriteLine(DateTime.Now.ToString() + " - " + message + "/n/n");
writer.Close();
}
catch
{
}
}