一直看博客园的文章,也没有写篇文章开张下。今天总结下自己最近闲暇时间做的一个NBA赛事预告的页面的程序,也许会比较乱,请大家撮合看吧。

我是一名篮球爱好者,一直关注NBA,就要去赛事预告的网站去看看最近都有哪些比赛要进行,我非常喜欢热火队,是韦德的球迷,欢迎篮球爱好者一块交流交流。好了不扯篮球了,说说我的程序吧。我是用C#的WebBrowser来采集比赛信息的(不用自己往页面添加比赛信息,因为那个实时性比较强,比较麻烦),用程序生成HTML页面,挂到网上。

我用WebBrowser去访问http://nba.sports.sina.com.cn/match_result.php,新浪的比赛预告页面,获取页面元素并解析

View Code

 public static List<MatchAdByDay> GetMatchAdvanceList(int count,out int result){List<MatchAdByDay> MatchDayList = new List<MatchAdByDay>();WebBrowser mybrowser = new WebBrowser();mybrowser.Navigate("http://nba.sports.sina.com.cn/match_result.php"); //比赛预告网站 WebBrowser mybrowser2 = new WebBrowser();mybrowser2.Navigate("http://www.fengyunzhibo.com/play-list"); //风云直播网站while(mybrowser.ReadyState != WebBrowserReadyState.Complete){Application.DoEvents();}while (mybrowser2.ReadyState != WebBrowserReadyState.Complete){Application.DoEvents();}try{HtmlElement element = mybrowser.Document.GetElementById("table980middle");HtmlElementCollection list = element.GetElementsByTagName("tr");List<string> NBAList = new List<string>();int a = 0;foreach (var v in list){HtmlElement e = v as HtmlElement;string s = e.InnerText;if (s.Contains("星期")){HtmlElement td = e.GetElementsByTagName("td")[0];//直播时间
                        NBAList.Add(td.InnerText);a += 1;}else{var tds = e.GetElementsByTagName("td");NBAList[a - 1] = string.Format("{0}@{1},{2},{3},{4},{5},{6},{7}", NBAList[a - 1], tds[0].InnerText, tds[2].InnerText, string.Format(@"{0}&{1}", tds[3].InnerText, tds[3].GetElementsByTagName("a")[0].GetAttribute("href")), tds[4].InnerText, string.Format(@"{0}&{1}", tds[8].InnerText, tds[8].GetElementsByTagName("a")[0].GetAttribute("href")), string.Format(@"{0}&{1}", tds[7].InnerText, tds[7].GetElementsByTagName("a")[0].GetAttribute("href")), tds[11].InnerText);}}for (int j = 0; j < count; j++) //只显示count天
                {MatchAdByDay entity = new MatchAdByDay();MatchDayList.Add(entity);}for (int j = 0; j < count; j++){List<MatchAdModel> MatchList = new List<MatchAdModel>();string[] matchs = NBAList[j].Split('@');string matchDate = matchs[0];for (int i = 1; i < matchs.Length; i++){MatchAdModel model = new MatchAdModel();model.MatchDate = matchDate;string[] ls = matchs[i].Split(',');model.MatchTime = ls[0];model.Away = ls[1];model.MatchScore = ls[2].Split('&')[0];model.MatchScoreHref = ls[2].Split('&')[1];model.Home = ls[3];model.MatchData = ls[4].Split('&')[0];model.MatchDataHref = ls[4].Split('&')[1];model.WordLive = "战报/图文直播";model.WordLiveAddress = ls[5].Split('&')[1];#region 视频直播switch (ls[6]){case "新浪体育": MatchLiveModel live = new MatchLiveModel();List<MatchLiveModel> liveList = new List<MatchLiveModel>();live.Title = "新浪直播";live.Address = "http://live.video.sina.com.cn/room/nba";liveList.Add(live);model.Lives = liveList;break;case "中央五套": MatchLiveModel live2 = new MatchLiveModel();List<MatchLiveModel> liveList2 = new List<MatchLiveModel>();live2.Title = "CCTV5";live2.Address = "http://2012.cntv.cn/live/CCTV5/index.shtml";live2.Address2 = "http://sports.cntv.cn/live/cctv5/index.shtml";live2.Address3 = "http://tv.qqst.com/fy/cctv5.htm";liveList2.Add(live2);model.Lives = liveList2;break;default: model.Lives = new List<MatchLiveModel>();break;}#endregion#region 获取风云直播直播列表if (j < 2){HtmlElement ele = mybrowser2.Document.GetElementById("content");HtmlElementCollection l = ele.GetElementsByTagName("ul")[j].GetElementsByTagName("li");foreach (var m in l){HtmlElement e = m as HtmlElement;string fyLaber = e.GetElementsByTagName("label")[1].InnerText.Trim().Replace(" ", "");if (fyLaber.Contains(string.Format("{0}-{1}", model.Home, model.Away))){MatchLiveModel live = new MatchLiveModel();HtmlElementCollection ha = e.GetElementsByTagName("a");live.Title = ha[0].InnerText;live.Address = ha[0].GetAttribute("href");if (model.Lives != null){model.Lives.Add(live);}}}}#endregionMatchList.Add(model);}MatchDayList[j].MatchDayList = MatchList;}result = 0;}catch{result = 1;}return MatchDayList;}

解析人家的页面获取比赛预告对象后,就开始生成HTML了

我把这个主要的类给贴出来,写的很乱。说说自己遇到的问题和解决办法:

1:好多NBA爱好者看预告,其中的直播信息是很重要的,可以看看那场比赛有没有电视转播,视频转播,但新浪那个网站只有直播球队,时间,比分等信息,直播信息不全,这个可不行,咋办,我想到了风云直播,我就要解析他的页面了,我可以利用时间和球队名称来匹配那场比赛,然后找出他的直播列表,放入对象中,这样就实现了直播信息的添加。

2:为了美观我想把比赛球队加上图标,图标我已经下载到本地,网络获取的球队都是中文,第一次我就用中文命名图片,来显示图片,可是放到服务器上出问题呢,图片不显示,人家不识别中文啊,我只好利用方法把中文转成拼音,然后图片改成拼音命名,然后就显示出来了。下面是中文转拼音的代码:

View Code

        /// <summary>/// 汉字转换成字母/// </summary>public static string ToSpell(this string str_Chinese){try{Hashtable t = hb();byte[] b = System.Text.Encoding.Default.GetBytes(str_Chinese);int p;StringBuilder ret = new StringBuilder();for (int i = 0; i < b.Length; i++){p = (int)b[i];if (p > 128){p = p * 256 + b[++i] - 65536;ret.Append(g(t, p));}else{ret.Append((char)p);}}t.Clear();return ret.ToString();}catch{return "";}}

这样页面就生成出来了

好了就介绍这里了,没啥技术含量,就是利用自己的爱好做点小东西而已,希望大家提意见和建议。网站已经挂到网上,希望篮球爱好者支持下:http://www.5ailanqiu.com/

转载于:https://www.cnblogs.com/zb-success/archive/2013/04/12/zb.html

篮球爱好和程序的结合:C#生成NBA赛事预告页面相关推荐

  1. 小程序之 保存canvas生成商品图片附加小程序二维码 分享到朋友圈

    小程序之 保存canvas生成商品图片附加小程序二维码 分享到朋友圈 一.概述 需要用到的生成二维码组件(可自行下载添加到小程序根目录utils里):https://github.com/demi52 ...

  2. Canvas绘图在微信小程序中的应用:生成个性化海报

    Canvas绘图在微信小程序中的应用:生成个性化海报 如极客时间的一些实现案例: 基础语法 Canvas本质是一个可以使用脚本(通常为JavaScript)来绘制图形的 HTML 元素,默认大小为30 ...

  3. 设置 ASP.NET 存储当前应用程序的临时文件(生成的源、编译了的程序集等)的目录的物理路径。...

    设置 ASP.NET 存储当前应用程序的临时文件(生成的源.编译了的程序集等)的目录的物理路径. 修改 web.config <system.web> <compilation de ...

  4. 启动(程序还没执行生成dump文件的代码)就崩溃的处理流程

    何志丹 如果有专业人员,利用Windbg启动这个程序,在分析就可以了. 上次崩溃,让大家手忙脚乱.所以列了一个启动(程序还没执行生成dump文件的代码)就崩溃的处理流程. 1,用我写的opendll. ...

  5. 随机抽人名小程序_篮球还可以这样玩?推荐你3个篮球趣味游戏小程序

    篮球是男生都喜欢的运动项目之一吧,那么关于篮球的游戏你们是不是也很喜欢呢?下面是小编为你们带来的3个篮球趣味游戏小程序,希望你感兴趣哦! 1.篮球投投投 篮球投投投是一款休闲娱乐的微信小程序,游戏简单 ...

  6. 篮球社交小程序开发功能

    篮球对于男生而言有着重要的意义,所以很多男性用户都会利用闲暇时候打篮球,不仅能够体会大汗淋漓的感觉,也能结识到志同道合的朋友,在现如今的篮球赛社交圈中,零散的赛事许多 ,来来回回的棋友全是一样.为客户 ...

  7. 小程序发布之后无法生成海报问题

    CRMEB商城 小程序发布之后无法生成海报问题 1.小程序需要正式发布后,才能生成产品二维码 2.检测小程序后台,检测下载域名是否配置:"downloadFile合法域名" 3.检 ...

  8. [附源码]计算机毕业设计Python+uniapp篮球竞技系统APPo206c(程序+lw+APP+远程部署)

    [附源码]计算机毕业设计Python+uniapp篮球竞技系统APPo206c(程序+lw+APP+远程部署) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行环境配置: Py ...

  9. 微信小程序入门-随机人脸生成

    微信小程序入门-随机人脸生成 开发背景 工具准备 微信小程序开发过程 开发背景 this person does not exist 这个网站起源于英伟达公司研究人员们打造的AI机器人--其能够生成随 ...

最新文章

  1. C 语言编程 — 静态库、动态库和共享库
  2. 返回一个二维整数数组中最大子数组的和
  3. 用canvas绘制一个圆形,实现绕着一个中心运动
  4. [置顶]动态网页开发基础【笔记】
  5. [转载]C#异步委托的用法 .
  6. MySQL - 创建存储过程Procedure,Do While实现循环
  7. Java-if选择结构
  8. iphone文件怎么上传到服务器,iPhone编程中文件上传到HTTP服务器
  9. tinyxml 内存泄露_tinyxml优化之一
  10. 又一尴尬问题!不少用户反馈iPhone 12屏幕特别“黄”
  11. JS--------文件操作基本方法:上传/下载
  12. dubbo/dubbox部署资料收集
  13. SCVMM2008测试手册
  14. 网易邮箱发送邮件显示服务器错误,Outlook Express收发163.com邮件( 服务器错误: 553)...
  15. python可以用于工业机器人编程与操作_如何实现工业机器人编程抓取
  16. Linux电源管理(五)thermal
  17. 医保种类及医疗保险待遇
  18. 英语演讲常用连接词和句子
  19. 第二届北京职教国际青年创新创业技能大赛启动
  20. linux查显卡型号_Windows/Linux下怎么查看笔记本显卡型号

热门文章

  1. Win10资源管理器CPU持续占用20%解决方法
  2. Python wordcloud词云:源码分析及简单使用
  3. 中山大学2021级研究生学术道德规范在线考试学习资料
  4. 2021-2022上学期 奖状的清单
  5. noseunittestpytest
  6. 《Effective C++》读书笔记 条款40:明智而审慎地使用多重继承
  7. 大学生计算机系统推荐,上大学买电脑?最适合大学生学习用的Windows笔记本电脑推荐!...
  8. istio-ingress/egress
  9. 六, 跨语言微服务框架 - Istio Ingress和Egress详解(解决Istio无法外网访问问题)
  10. nginx image_filter模块415问题