asp.Net(C#)データ収集クラス
10999 ワード
using System;
using System.Data;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Web;
using MSXML2; // COM - Microsoft XML V3.0-V6.0
using System.Text.RegularExpressions;
namespace EC
{
/// <summary>
///
/// </summary>
public class GetRemoteObj
{
#region
public GetRemoteObj()
{
//
// TODO:
//
}
~GetRemoteObj()
{
Dispose();
}
#endregion
#region IDisposable
public void Dispose()
{
GC.SuppressFinalize(this);
}
#endregion
#region
/// <summary>
///
/// </summary>
/// <param name="filename"> </param>
/// <returns></returns>
public string GetFileExtends(string filename)
{
string ext = null;
if (filename.IndexOf('.') > 0)
{
string[] fs = filename.Split('.');
ext = fs[fs.Length - 1];
}
return ext;
}
#endregion
#region
/**********************************
* :GetRemoteHtmlCode
* :
* :Url: url
* :
* GetRemoteObj o = new GetRemoteObj();
* string url = @"http://www.baidu.com";
* string s = o.GetRemoteHtmlCode(url);
* Response.Write(s);
* o.Dispose();
* ********************************/
/// <summary>
///
/// </summary>
/// <param name="url"> url</param>
/// <returns></returns>
public string GetRemoteHtmlCode(string Url)
{
string s = "";
MSXML2.XMLHTTP _xmlhttp = new MSXML2.XMLHTTP();
_xmlhttp.open("GET", Url, false, null, null);
_xmlhttp.send("");
if (_xmlhttp.readyState == 4)
{
s = System.Text.Encoding.Default.GetString((byte[])_xmlhttp.responseBody);
}
return s;
}
#endregion
#region
/**********************************
* :RemoteSave
* :
* :Url: url;Path:
* :
* GetRemoteObj o = new GetRemoteObj();
* string s = "";
* string url = @"http://www.baidu.com/img/logo.gif";
* string path =Server.MapPath("Html/");
* s = o.RemoteSave(url,path);
* Response.Write(s);
* o.Dispose();
* ******************************/
/// <summary>
///
/// </summary>
/// <param name="Url"> url</param>
/// <param name="Path"> </param>
/// <returns></returns>
public string RemoteSave(string Url, string Path)
{
Random ra = new Random();
string StringFileName = DateTime.Now.ToString("yyyyMMddHHmmssffff") + "." + GetFileExtends(Url);
string StringFilePath = Path + StringFileName;
MSXML2.XMLHTTP _xmlhttp = new MSXML2.XMLHTTP();
_xmlhttp.open("GET", Url, false, null, null);
_xmlhttp.send("");
if (_xmlhttp.readyState == 4)
{
if (System.IO.File.Exists(StringFilePath))
System.IO.File.Delete(StringFilePath);
System.IO.FileStream fs = new System.IO.FileStream(StringFilePath, System.IO.FileMode.CreateNew);
System.IO.BinaryWriter w = new System.IO.BinaryWriter(fs);
w.Write((byte[])_xmlhttp.responseBody);
w.Close();
fs.Close();
}
else
throw new Exception(_xmlhttp.statusText);
return StringFileName;
}
#endregion
#region
/// <summary>
///
/// </summary>
/// <param name="HtmlCode">HTML </param>
/// <returns></returns>
public string ReplaceEnter(string HtmlCode)
{
string s = "";
if (HtmlCode == null || HtmlCode == "")
s = "";
else
s = HtmlCode.Replace("\"", "");
s = s.Replace("\r
", "");
return s;
}
#endregion
#region HTML
/// <summary>
/// HTML
/// </summary>
/// <param name="HtmlCode">html </param>
/// <returns></returns>
public string RemoveHTML(string HtmlCode)
{
string MatchVale = HtmlCode;
foreach (Match s in Regex.Matches(HtmlCode, "<.+?>"))
{
MatchVale = MatchVale.Replace(s.Value, "");
}
return MatchVale;
}
#endregion
#region
/// <summary>
///
/// </summary>
/// <param name="HtmlCode"></param>
/// <returns></returns>
public List<string> GetHref(string HtmlCode)
{
List<string> list = new List<string>();
string Reg = @"(h|H)(r|R)(e|E)(f|F) *= *('|"")?((\w|\\|\/|\.|:|-|_)+)('|""| *|>)?";
foreach (Match m in Regex.Matches(HtmlCode, Reg))
{
list.Add((m.Value).ToLower().Replace("href=", "").Trim());
}
return list;
}
#endregion
#region
/// <summary>
///
/// </summary>
/// <param name="HtmlCode"></param>
/// <param name="imgHttp"> http:// </param>
/// <returns></returns>
public string GetImgSrc(string HtmlCode, string imgHttp)
{
string MatchVale = "";
string Reg = @"<img.+?>";
foreach (Match m in Regex.Matches(HtmlCode, Reg))
{
MatchVale += GetImg((m.Value).ToLower().Trim(), imgHttp) + "||";
}
return MatchVale;
}
/// <summary>
/// <img src="" />
/// </summary>
/// <param name="ImgString"><img src="" /> </param>
/// <returns></returns>
public string GetImg(string ImgString, string imgHttp)
{
string MatchVale = "";
string Reg = @"src=.+\.(bmp|jpg|gif|png|)";
foreach (Match m in Regex.Matches(ImgString.ToLower(), Reg))
{
MatchVale += (m.Value).ToLower().Trim().Replace("src=", "");
}
return (imgHttp + MatchVale);
}
#endregion
#region Html
/// <summary>
/// Html : Dictionary key- value-
/// </summary>
/// <param name="HtmlCode"> HTML </param>
/// <returns></returns>
public Dictionary<string, string> GetCodeHref(string HtmlCode)
{
Dictionary<string, string> dic = new Dictionary<string, string>();
// HTML href <B> </B>
string regex = @"\<a.*href\s*=\s*(?:""(?<url>[^""]*)""|'(?<url>[^']*)'|(?<url>[^\>^\s]+)).*\>(?<title>[^\<^\>]*)\<[^\</a\>]*/a\>";
Regex reg1 = new Regex(regex, RegexOptions.IgnoreCase);//
MatchCollection ms1 = reg1.Matches(HtmlCode);//
foreach (Match m1 in ms1)//
{
dic.Add(m1.Groups["title"].Value, m1.Groups["url"].Value);
}
return dic;
}
#endregion
#region
/// <summary>
///
/// </summary>
/// <param name="str"> </param>
/// <param name="s"> </param>
/// <param name="e"> </param>
/// <returns></returns>
public string GetRegValue(string str, string s, string e)
{
Regex rg = new Regex("(?<=(" + s + "))[.\\s\\S]*?(?=(" + e + "))", RegexOptions.Multiline | RegexOptions.Singleline);
return rg.Match(str).Value;
}
/// <summary>
///
/// </summary>
/// <param name="str"> </param>
/// <param name="s"> </param>
/// <param name="e"> </param>
/// <returns></returns>
public List<string> GetRegValueArr(string str, string s, string e)
{
Match m;
List<string> list = new List<string>();
Regex rg = new Regex("(?<=(" + s + "))[.\\s\\S]*?(?=(" + e + "))", RegexOptions.Multiline | RegexOptions.Singleline);
for (m = rg.Match(str); m.Success; m = m.NextMatch())
{
list.Add(m.Groups[0].Value);
}
return list;
}
#endregion
#region
public string RegReplace(string RegValue, string regStart, string regEnd)
{
string s = RegValue;
if (RegValue != "" && RegValue != null)
{
if (regStart != "" && regStart != null)
{
s = s.Replace(regStart, "");
}
if (regEnd != "" && regEnd != null)
{
s = s.Replace(regEnd, "");
}
}
return s;
}
#endregion
}
}