C#:如何得到一个网页的所有a标记 herf 链接代码
2010-10-12 16:25
459 查看
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Net;
1.先取得网页的原代码
Uri url=new Uri("http://www.blogjava.net/wujun");
HttpWebRequest request=(HttpWebRequest) WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader sr = new StreamReader(stream);
string str=sr.ReadToEnd();
sr.Close();
stream.Close();
response.Close();
得到网页的html源代码以后。再根据源代码分析 所有 <a href ="url"> 最后得到 href后面 url的链接地址
正则表达式
Regex RegExFindHref = new Regex(@"<a\s+([^>]*\s*)?href\s*=\s*(?:""(?<1>[/\a-z0-9_][^""]*)""|'(?<1>[/\a-z0-9_][^']*)'
|(?<1>[/\a-z0-9_]\S*))(\s[^>]*)?>(?<2>.*?)</a>", RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Compiled);
循环读出 连接地址
for (Match m = RegExFindHref.Match(str); m.Success; m = m.NextMatch())
{
TextBox1.Text+= m.Groups[1].ToString()+"\n";
}
运行后
TextBox1 将显示分析后的所有网页的连接 :
http://www.dotlucene.net/ http://www.castleproject.org/ http://www.codeplex.com/ http://www.codeproject.com/ http://www.asp.net/ http://www.nhibernate.org/ http://www.blogjava.net/wujun/CommentsRSS.aspx http://www.blogjava.net/wujun/archive/2006/10/23/47150.html#76745 http://www.blogjava.net/wujun/archive/2006/10/23.html http://www.blogjava.net/wujun/archive/2006/10/23/76769.html http://www.blogjava.net/wujun/archive/2006/10/23/76769.html http://www.blogjava.net/wujun/archive/2006/10/23/76769.html#FeedBack http://www.blogjava.net/wujun/admin/EditPosts.aspx?postid=76769 http://www.blogjava.net/wujun/AddToFavorite.aspx?id=76769 http://www.blogjava.net/wujun/archive/2006/10/20.html ......
..............
.........................等等等。。。
代码
/// <summary>
/// C# :从一段字符串中,输入开始和结束的字符,取中间的字符
/// </summary>
/// <param name="str">一段字符串</param>
/// <param name="strStart">开始字符</param>
/// <param name="strEnd">结束字符</param>
/// <returns></returns>
public static string AnalyzeMessage(string str, string strStart, string strEnd)
{
string Result = "";
int i = str.IndexOf(strStart);
if (i >= 0)
{
int j = str.IndexOf(strEnd, i + strStart.Length);
if (j > 0)
{
Result = str.Substring(i + strStart.Length, j - i - strStart.Length);
}
}
return Result;
}
using System.Text;
using System.Text.RegularExpressions;
using System.Net;
1.先取得网页的原代码
Uri url=new Uri("http://www.blogjava.net/wujun");
HttpWebRequest request=(HttpWebRequest) WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader sr = new StreamReader(stream);
string str=sr.ReadToEnd();
sr.Close();
stream.Close();
response.Close();
得到网页的html源代码以后。再根据源代码分析 所有 <a href ="url"> 最后得到 href后面 url的链接地址
正则表达式
Regex RegExFindHref = new Regex(@"<a\s+([^>]*\s*)?href\s*=\s*(?:""(?<1>[/\a-z0-9_][^""]*)""|'(?<1>[/\a-z0-9_][^']*)'
|(?<1>[/\a-z0-9_]\S*))(\s[^>]*)?>(?<2>.*?)</a>", RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Compiled);
循环读出 连接地址
for (Match m = RegExFindHref.Match(str); m.Success; m = m.NextMatch())
{
TextBox1.Text+= m.Groups[1].ToString()+"\n";
}
运行后
TextBox1 将显示分析后的所有网页的连接 :
http://www.dotlucene.net/ http://www.castleproject.org/ http://www.codeplex.com/ http://www.codeproject.com/ http://www.asp.net/ http://www.nhibernate.org/ http://www.blogjava.net/wujun/CommentsRSS.aspx http://www.blogjava.net/wujun/archive/2006/10/23/47150.html#76745 http://www.blogjava.net/wujun/archive/2006/10/23.html http://www.blogjava.net/wujun/archive/2006/10/23/76769.html http://www.blogjava.net/wujun/archive/2006/10/23/76769.html http://www.blogjava.net/wujun/archive/2006/10/23/76769.html#FeedBack http://www.blogjava.net/wujun/admin/EditPosts.aspx?postid=76769 http://www.blogjava.net/wujun/AddToFavorite.aspx?id=76769 http://www.blogjava.net/wujun/archive/2006/10/20.html ......
..............
.........................等等等。。。
代码
/// <summary>
/// C# :从一段字符串中,输入开始和结束的字符,取中间的字符
/// </summary>
/// <param name="str">一段字符串</param>
/// <param name="strStart">开始字符</param>
/// <param name="strEnd">结束字符</param>
/// <returns></returns>
public static string AnalyzeMessage(string str, string strStart, string strEnd)
{
string Result = "";
int i = str.IndexOf(strStart);
if (i >= 0)
{
int j = str.IndexOf(strEnd, i + strStart.Length);
if (j > 0)
{
Result = str.Substring(i + strStart.Length, j - i - strStart.Length);
}
}
return Result;
}
相关文章推荐
- 【小技巧】如何得到一个网页的所有a标记 herf 链接代码
- 得到一个网页的所有herf 链接代码
- [VB.NET]VB.NET中如何向网页提交一个请求,并得到返回的HTML代码?
- c#中如何得到网页中的URL
- visual studio 2010下 C# 编写的一个简单的网页源代码分析、链接抓取器
- 如何用C#代码获取某网页的内容(数据),
- 用正则表达式得到一个页面的所有链接
- C#如何遍历一个文件夹下面所有的文件、包括子文件夹里面的文件?
- c# 如何得到一个字符的ASCII码
- 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。
- C#网页参数传递的代码如何写?
- C#.NET读取一个文件夹下所有excel文件的代码
- 在c#中如何动态改变iframe的src值,动态指向一个网页
- 如何得到一个数据表的所有数字型字段???
- 在C#如何遍历一个对象的所有属性
- SQLServer\framework启动报异常:Module的类型初始值设定项引发异常 [转]QQ空间、新浪微博、腾讯微博等一键分享API链接代码 window下 mongodb快速安装 数据表查询所有子/父节点 C#学习笔记1
- Flex中如何给一个按钮添加链接,点击链接打开一个网页呢?
- 如何在QML应用中得到一个Item的所有属性,信号及方法
- C#里byte[] 怎么截取需要的字节;如何得到一个byte[]的值
- 在C#如何遍历一个对象的所有属性