关于网页抓取问题!截取字段!
抓取了一个网页,现在要截取字段
" <--开始--> 内容 <--结束--> "
public string HttpString_Filtrate(string Http_String, string Begin_String, string End_String)
{
int Begin_Int = Http_String.IndexOf(Begin_String);
int End_Int = Http_String.IndexOf(End_String);
string ReString = Http_String.Substring(End_Int,Begin_Int);
return ReString;
}
现在要得到内容,我写这个好象不行。。。。。 <--开始--> 和 <--结束--> 为不固定值
------解决方案--------------------正则匹配 特殊符号。。
------解决方案--------------------既然你抓的是网页
那你想取哪部分HTML标识的内容 总知道吧?
------解决方案--------------------substring(Begin_Int,End_Int-Begin_Int)
------解决方案--------------------找到开始位置
------解决方案--------------------substring(Begin_Int,End_Int-Begin_Int)
然后用正则表达式代替Begin_String和End_String
------解决方案--------------------用SubString个人觉得效率极低,用正则好!
------解决方案-------------------- //删除所有的html标记
public static string delHtml(string str)
{
if (str != null && str.Trim() != " ")
return Regex.Replace(str, " <[^> ]+> ", " ");
return str;
}
// 删除字符串中的特定标记
//isContent:是否清除内容
public static string delTag(string str, string tag, bool isContent)
{
if (tag == null || tag == " ")
{
return str;
}
if (isContent) //要求清除内容
{
return Regex.Replace(str, string.Format( " <({0})[^> ]*> ([\\s\\S]*?)
<\\/\\1> ", tag), " ", RegexOptions.IgnoreCase);
}
return Regex.Replace(str, string.Format(@ "( <{0}[^> ]*(> )?)|( </{0}[^> ]
*> )| ", tag), " ", RegexOptions.IgnoreCase);
}
// 删除字符串中的一组标记
//isContent:是否清除内容
public static string delTagArray(string str, string tagA, bool isContent)
{
string[] tagAa = tagA.Split( ', ');
foreach (string sr1 in tagAa) //遍历所有标记,删除
{
str = delTag(str, sr1, isContent);
}
return str;
}