asp.net+js实时奥运金牌榜代码第2/2页
更新时间:2008年09月09日 13:17:14 作者:
运期间,公司交给我一个任务,在公司主页上放上奥运金牌榜的排名,之前的实现方式是采用ajax
复制代码 代码如下:
<div id="gold">
<p>截止到9月09日09:46为止,<a href="http://2008.baidu.com/olympic/medal/list" target="_blank">北京奥运金牌榜</a>前五名如下:</p>
<table id="go" cellpadding="2" cellspacing="0">
<tr><th>名次</th><th>国家及地区</th><th>金牌</th><th>银牌</th><th>铜牌</th><th>总计</th></tr>
<tr><td>1</td><td><a href="http://2008.baidu.com/olympic/winner/list/c/203" target="_blank">中国</a></td><td>51</td><td>21</td><td>28</td><td>100</td></tr><tr><td>2</td><td><a href="http://2008.baidu.com/olympic/winner/list/c/116" target="_blank">美国</a></td><td>36</td><td>38</td><td>36</td><td>110</td></tr><tr><td>3</td><td><a href="http://2008.baidu.com/olympic/winner/list/c/50" target="_blank">俄罗斯</a></td><td>23</td><td>21</td><td>28</td><td>72</td></tr><tr><td>4</td><td><a href="http://2008.baidu.com/olympic/winner/list/c/195" target="_blank">英国</a></td><td>19</td><td>13</td><td>15</td><td>47</td></tr><tr><td>5</td><td><a href="http://2008.baidu.com/olympic/winner/list/c/45" target="_blank">德国</a></td><td>16</td><td>10</td><td>15</td><td>41</td></tr>
</table>
</div>
比较下我们要实现的样式:(紫红色部分与上面要偷的数据对应)

实现步骤如下:
1、先读取整个页面的html代码:
复制代码 代码如下:
//用来存放接受到的每一行数据
string content = "";
//接受到的是字节流
Stream str;
//提供向URI标识的资源发送数据和从URI标识的资源接受数据的公共方法
WebClient web = new WebClient();
//从指定的URI中下载数据并打开流
str = web.OpenRead("http://www.baidu.com/s?wd=%B0%C2%D4%CB%BD%F0%C5%C6%B0%F1&lm=0&si=&rn=10&ie=gb2312&ct=0&cl=3&f=1&rsp=0");
//以GB2312编码从字节流中读取数据
StreamReader sr = new StreamReader(str, Encoding.GetEncoding("GB2312"));
//把数据全部读出来
content = sr.ReadToEnd();
2、对其进行过滤和替换只提取我们需要的部分,这部分我正则不行,写得有点乱:
复制代码 代码如下:
Regex r = new Regex(@"<tr><th>名次</th><th>国家及地区</th><th>金牌</th><th>银牌</th><th>铜牌</th><th>总计</th></tr>[\s\S]+?</table>");
Match m = r.Match(content); //匹配字符串
GroupCollection gc = m.Groups;
Regex rb = new Regex("</?(a|A)( .*?>|>)");
string soutput = rb.Replace(gc[0].ToString(), "");
soutput = soutput.Replace("<tr><th>名次</th><th>国家及地区</th><th>金牌</th><th>银牌</th><th>铜牌</th><th>总计</th></tr>", "");
soutput = soutput.Replace("</table>","");
Regex rc = new Regex("<td>[1,2,3,4,5]</td>");
soutput = rc.Replace(soutput,"");
3、这样样式比较难控制,水平也有限,只用JS实现了。
复制代码 代码如下:
<script type ="text/javascript">
window.onload = function(){
var tr_ = document.getElementById("myTable").getElementsByTagName("tr");
var td_;
for(var i = 0;i < tr_.length; i ++){
tr_[i].style.backgroundColor = i%2==0?"#FFF4C7":"#FEEAAE";
if(i > 0){
td_ = tr_[i].getElementsByTagName("td")[0].style.textAlign = "center";
}
if(i == 4){
tr_[4].style.display = "none";
}
}
//第一个单元格居中
}
</script>
相关文章
理解ASP.NET Core 错误处理机制(Handle Errors)
这篇文章主要介绍了理解ASP.NET Core 错误处理(Handle Errors) ,在这里需要注意的是,与“异常处理”有关的中间件,一定要尽早添加,这样,它可以最大限度的捕获后续中间件抛出的未处理异常。感兴趣的朋友跟随小编一起看看吧2021-11-11
ASP.NET WebForm中<%=%>与<%#%>的区别
这篇文章主要介绍了ASP.NET WebForm中<%=%>与<%#%>的区别,需要的朋友可以参考下2015-01-01


最新评论