用正規表示式自動下載網頁中的圖片
首先獲得網頁的Html程式碼,然後用正規表示式分析其中圖片的下載地址,最後自動逐個下載。
using System.Net;
////
/// Download Image from website
/// better to put into threads
///
private void DownloadImage()
{
WebClient c = new WebClient();
//Get html code
string content = c.DownloadString(Uri);
Collection<string> address = new Collection<string>();
Collection<string> name = new Collection<string>();
//Analyse html code to get images address(Uri) and (Name) list
ParseHtml(content, Prefix, PicUriPrefix + @"(?[^""]*?)"">(?[^ ", address, name);
if (address.Count > 0 && name.Count > 0 && address.Count == name.Count)
{
if (Directory.Exists(folder) == false) Directory.CreateDirectory(folder);//Create folder
foreach (string add in address)
{
//Download images one by one
c.DownloadFile(add, Path.Combine(folder, name[address.IndexOf(add)] + ".jpg"));
}
}
}
///
/// Parse Html using regular expressions
///
/// Html content
/// Uri prefix
/// regular expression
/// Image addresses collection
/// Image names collection
private void ParseHtml(string content, string prefix, string expression, Collection<string> address, Collection<string> name)
{
if (String.IsNullOrEmpty(expression) || address == null || name == null) return;
Regex re = new Regex(expression, RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.RightToLeft);
MatchCollection mc = re.Matches(content);
if (mc == null || mc.Count == 0) return;
foreach (Match m in mc)
{
address.Add(prefix + m.Groups["Uri"].Value);
name.Add(m.Groups["Name"].Value);
}
}
Html部分程式碼如下:
alt="" src="/docfile/dyn/12345678LANGCCCCDDDDEEEEEEEERT09">BMW 3-seriesdt>\par
alt="" src="/docfile/dyn/12345678LANGCCCCDDDDEEEEEEEEEE01">Toyotadt>\par
alt="" src="/docfile/dyn/12345678LANGCCCCDDDDEEEEEEEEJY25">Polo crossdt>\par
alt="" src="/docfile/dyn/12345678LANGCCCCDDDDEEEEEEEEMO02">Golf 4.5dt>\par
要用正規表示式從中獲得圖片下載地址(例如:/docfile/dyn/12345678LANGCCCCDDDDEEEEEEEERT09)和圖片名稱(例如:BMW 3-series)
正規表示式部分如下:
@"/docfile/dyn/(?[^""]*?)"">(?[^ "
using System.Net;
////
/// Download Image from website
/// better to put into threads
///
private void DownloadImage()
{
WebClient c = new WebClient();
//Get html code
string content = c.DownloadString(Uri);
Collection<string> address = new Collection<string>();
Collection<string> name = new Collection<string>();
//Analyse html code to get images address(Uri) and (Name) list
ParseHtml(content, Prefix, PicUriPrefix + @"(?
if (address.Count > 0 && name.Count > 0 && address.Count == name.Count)
{
if (Directory.Exists(folder) == false) Directory.CreateDirectory(folder);//Create folder
foreach (string add in address)
{
//Download images one by one
c.DownloadFile(add, Path.Combine(folder, name[address.IndexOf(add)] + ".jpg"));
}
}
}
///
/// Parse Html using regular expressions
///
/// Html content
/// Uri prefix
/// regular expression
/// Image addresses collection
/// Image names collection
private void ParseHtml(string content, string prefix, string expression, Collection<string> address, Collection<string> name)
{
if (String.IsNullOrEmpty(expression) || address == null || name == null) return;
Regex re = new Regex(expression, RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.RightToLeft);
MatchCollection mc = re.Matches(content);
if (mc == null || mc.Count == 0) return;
foreach (Match m in mc)
{
address.Add(prefix + m.Groups["Uri"].Value);
name.Add(m.Groups["Name"].Value);
}
}
Html部分程式碼如下:
alt="" src="/docfile/dyn/12345678LANGCCCCDDDDEEEEEEEERT09">BMW 3-seriesdt>\par
alt="" src="/docfile/dyn/12345678LANGCCCCDDDDEEEEEEEEEE01">Toyotadt>\par
alt="" src="/docfile/dyn/12345678LANGCCCCDDDDEEEEEEEEJY25">Polo crossdt>\par
alt="" src="/docfile/dyn/12345678LANGCCCCDDDDEEEEEEEEMO02">Golf 4.5dt>\par
要用正規表示式從中獲得圖片下載地址(例如:/docfile/dyn/12345678LANGCCCCDDDDEEEEEEEERT09)和圖片名稱(例如:BMW 3-series)
正規表示式部分如下:
@"/docfile/dyn/(?
注意其中group的用法(? *?),和引號的匹配用法,匹配雙引號前面需要再帶一個雙引號。其中Uri這個group在dyn/後面,直到雙引號結束;後面跟隨著雙引號和>,然後就是Name這個group;它以。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-610370/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 正規表示式匹配html中的圖片HTML
- 匹配圖片連結地址的正規表示式
- 圖片格式型別驗證正規表示式型別
- Javascript正規表示式測試網頁 (轉)JavaScript網頁
- Dreamweaver網頁設計中的正規表示式使用方法教程網頁
- 正規表示式在iOS中的運用iOS
- 正規表示式的應用
- java中的正規表示式Java
- JS中的正規表示式JS
- iOS中的正規表示式iOS
- Oracle中的正規表示式Oracle
- 正規表示式是如何讓你的網頁卡住的網頁
- .NET下正規表示式應用四例
- 正規表示式視訊教程免費下載
- js中的正規表示式(1)JS
- Java 中 Emoji 的正規表示式Java
- Oracle sql中的正規表示式OracleSQL
- python自動下載圖片Python
- 正規表示式應用收集
- Java正規表示式應用Java
- 正規表示式在iOS開發中的應用iOS
- 【正規表示式】常用的正規表示式(數字,漢字,字串,金額等的正規表示式)字串
- 大家進來討論下正規表示式的應用
- js網頁圖片每日自動更新JS網頁
- 正規表示式在Java中的使用Java
- 淺談js中的正規表示式JS
- python中的re(正規表示式)Python
- oracle中的正規表示式(regular expression)OracleExpress
- 正規表示式中的特殊字元(轉)字元
- JavaScript中的正規表示式(2) (轉)JavaScript
- UltraEdit (UE)中的常用正規表示式
- JavaScript中的正規表示式(1) (轉)JavaScript
- 正規表示式
- asp.net中匹配URL網址的正規表示式ASP.NET
- js利用正規表示式清楚頁面中的指令碼程式碼JS指令碼
- 20個實用正規表示式
- Linux中基本正規表示式Linux
- JavaScript的正規表示式JavaScript