跪求!如何将这个网页表格的数据抓取出来??

jacksoncan 2012-08-13 11:05:50
有一个网页里面有一个这样的表格:


<table width="100%" border="0" cellpadding="0" cellspacing="0" class="resultTable rtborder">

<tr class="DR">
<td>
<span class="n_DateTime">2012-08-13 07:19</span>
<a href='/SC/News/HK6/101/NOW.501325.html' class="n_Title">《公司业绩》中国优通<08232.HK>半年纯利2065万人民币 增长6%</a>
</td>
</tr>

<tr class="ADR">
<td>
<span class="n_DateTime">2012-08-13 07:19</span>
<a href='/SC/News/HK6/101/NOW.501324.html' class="n_Title">《公司业绩》北大青鸟<08095.HK>半年纯利90万人民币 跌96%</a>
</td>
</tr>

<tr class="DR">
<td>
<span class="n_DateTime">2012-08-13 07:19</span>
<a href='/SC/News/HK6/101/NOW.501323.html' class="n_Title">《公司业绩》太阳国际<08029.HK>首季纯利倍增至2708万</a>
</td>
</tr>
....


想抓取里面的“时间”、“文本”、超链接的信息,写入一个表格控件里面展示给客户,button事件代码如下:

private void btnOK_Click(object sender, EventArgs e)
{

string url = "http://www.aastocks.com/sc/News/AAFN/101/Page1.html";


WebRequest request = WebRequest.Create(url); //请求url
WebResponse response = request.GetResponse(); //获取url数据

StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8"));
this.richTextBox1.Text = reader.ReadToEnd(); //将数据写入到textbox中

reader.Close();
reader.Dispose();
response.Close();

string strRegex = @"<tr[^<]*<td>(?<value1>.*?)</td>[^<]*</tr>"; //构造解析表格数据的正则表达式

Regex regex = new Regex(strRegex);
MatchCollection mc = regex.Matches(richTextBox1.Text); //执行匹配

this.dataGrid.Rows.Clear();


//将匹配的数据写入到gridview中展示给用户
foreach (Match m in mc)
{

//将解析出的数据填充到gridview的行中
dataGrid.Rows.Add();
dataGrid.Rows[dataGrid.Rows.Count - 1].Cells[0].Value = m.Groups["value1"].Value;

}


现在的问题是:

1、这个正则表达式应该怎么写?(也就是如何将其解析出来写入控件?)
2、能否给出具体的代码和解释?(越详细越好,非常感谢!)
...全文
285 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jacksoncan 2012-08-13
  • 打赏
  • 举报
回复
厉害!谢谢大神!!!

[Quote=引用 1 楼 的回复:]

C# code

string pattern = @"(?i)<span[^>]*?class=(['""]?)n_DateTime\1[^>]*?>([^<>]*?)</span>[^<>]*?<a[^>]*?href=(['""]?)([^'""]*?)\3[^>]*?>([\s\S]*?)</a>";

foreach (Match m in Regex……
[/Quote]
newtee 2012-08-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

C# code

string pattern = @"(?i)<span[^>]*?class=(['""]?)n_DateTime\1[^>]*?>([^<>]*?)</span>[^<>]*?<a[^>]*?href=(['""]?)([^'""]*?)\3[^>]*?>([\s\S]*?)</a>";

foreach (Match m in Regex……
[/Quote]正则就是神 看来不学不行了
  • 打赏
  • 举报
回复
全部代码如下,没什么好解释的,就是匹配分组,获取,想要进一步了解正则,可以看看这个博客,很详细的
http://blog.csdn.net/lxcnn/article/category/538256
string url = "http://www.aastocks.com/sc/News/AAFN/101/Page1.html";


WebRequest request = WebRequest.Create(url); //请求url
WebResponse response = request.GetResponse(); //获取url数据

StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8"));
string tempStr = reader.ReadToEnd();


//string tempStr = File.ReadAllText(@"C:\Documents and Settings\Administrator\桌面\Test.txt", Encoding.GetEncoding("GB2312"));//读取txt
string pattern = @"(?i)<span[^>]*?class=(['""]?)n_DateTime\1[^>]*?>([^<>]*?)</span>[^<>]*?<a[^>]*?href=(['""]?)([^'""]*?)\3[^>]*?>([\s\S]*?)</a>";

foreach (Match m in Regex.Matches(tempStr, pattern))
{
//循环输出
string datetime = m.Groups[2].Value;//2012-08-13 07:19
string href = m.Groups[4].Value;// /sc/News/HK6/101/NOW.501325.html

string text = m.Groups[5].Value;// 《公司业绩》中国优通<08232.HK>半年纯利2065万人民币 增长6%

}
  • 打赏
  • 举报
回复

string pattern = @"(?i)<span[^>]*?class=(['""]?)n_DateTime\1[^>]*?>([^<>]*?)</span>[^<>]*?<a[^>]*?href=(['""]?)([^'""]*?)\3[^>]*?>([\s\S]*?)</a>";

foreach (Match m in Regex.Matches(tempStr, pattern))
{
//循环输出
string datetime = m.Groups[2].Value;//网址
string href = m.Groups[4].Value;
string text = m.Groups[5].Value;
}

111,096

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧