用正規表示式自動下載網頁中的圖片
首先獲得網頁的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
- 自動生成正規表示式
- 匹配圖片連結地址的正規表示式
- requests+正規表示式(二) 之 百科和京東圖片 的下載
- [轉載] 正規表示式
- Dreamweaver網頁設計中的正規表示式使用方法教程網頁
- 正規表示式的應用
- 正規表示式是如何讓你的網頁卡住的網頁
- JS中的正規表示式JS
- java中的正規表示式Java
- 正規表示式視訊教程免費下載
- python自動下載圖片Python
- Grep(Regex)中的正規表示式
- 談談正規表示式中的 “.”
- js中的正規表示式(1)JS
- 【正規表示式】常用的正規表示式(數字,漢字,字串,金額等的正規表示式)字串
- Linux中基本正規表示式Linux
- 正規表示式
- 正規表示式.
- 正規表示式在Java中的使用Java
- Linux之grep中的正規表示式Linux
- 淺談js中的正規表示式JS
- 20個實用正規表示式
- asp.net中匹配URL網址的正規表示式ASP.NET
- Linux 的正規表示式Linux
- JS常用正規表示式及驗證時間的正規表示式JS
- 自學python網路爬蟲,從小白快速成長,分別實現靜態網頁爬取,下載meiztu中圖片;動態網頁爬取,下載burberry官網所有當季新品圖片。Python爬蟲網頁
- EditPlus中的正規表示式 實戰(1)
- EditPlus中的正規表示式實戰(5)
- EditPlus中的正規表示式實戰(6)
- 常用正規表示式
- JavaScript 正規表示式JavaScript
- MySQL正規表示式MySql
- 正規表示式(java)Java
- SQL正規表示式SQL
- python正規表示式Python
- 正規表示式合集
- 正規表示式(一)
- Python 正規表示式Python