现在的位置: 首页 > 综合 > 正文

流媒体开发之-新浪网NBA赛程解析

2013年03月25日 ⁄ 综合 ⁄ 共 6082字 ⁄ 字号 评论关闭

在前面解析新浪网NBA排名,这章解析NBA赛事。

首先还是封装一个存储赛事内容的类:

package com.jwzhangjie.model;

import java.io.Serializable;

/**
 * 赛程
 * @author jwzhangjie
 *
 */
public class CompetitionNoticeModel implements Serializable{

	private static final long serialVersionUID = 1L;

	/**
	 * 比赛时间
	 */
	private String date;
	/**
	 * 比赛类型
	 */
	private String type;
	/**
	 * 客队
	 */
	private String awayTeam;
	/**
	 * 比分
	 */
	private String score;
	/**
	 * 主队
	 */
	private String homeTeam;
	/**
	 * 客队最高分
	 */
	private String awayMaxScore;
	/**
	 * 主队最高分
	 */
	private String homeMaxScore;
	/**
	 * 战报
	 */
	private String battlefield;
	/**
	 * 统计
	 */
	private String statistics;
	/**
	 * 视频
	 */
	private String video;
	/**
	 * 组图
	 */
	private String photos;
	/**
	 * 网络直播/电视直播
	 */
	private String playType;
	
	
	public String getDate() {
		return date;
	}


	public void setDate(String date) {
		this.date = date;
	}


	public String getType() {
		return type;
	}


	public void setType(String type) {
		this.type = type;
	}


	public String getAwayTeam() {
		return awayTeam;
	}


	public void setAwayTeam(String awayTeam) {
		this.awayTeam = awayTeam;
	}


	public String getScore() {
		return score;
	}


	public void setScore(String score) {
		this.score = score;
	}


	public String getHomeTeam() {
		return homeTeam;
	}


	public void setHomeTeam(String homeTeam) {
		this.homeTeam = homeTeam;
	}


	public String getAwayMaxScore() {
		return awayMaxScore;
	}


	public void setAwayMaxScore(String awayMaxScore) {
		this.awayMaxScore = awayMaxScore;
	}


	public String getHomeMaxScore() {
		return homeMaxScore;
	}


	public void setHomeMaxScore(String homeMaxScore) {
		this.homeMaxScore = homeMaxScore;
	}


	public String getBattlefield() {
		return battlefield;
	}


	public void setBattlefield(String battlefield) {
		this.battlefield = battlefield;
	}


	public String getStatistics() {
		return statistics;
	}


	public void setStatistics(String statistics) {
		this.statistics = statistics;
	}


	public String getVideo() {
		return video;
	}


	public void setVideo(String video) {
		this.video = video;
	}


	public String getPhotos() {
		return photos;
	}


	public void setPhotos(String photos) {
		this.photos = photos;
	}


	public String getPlayType() {
		return playType;
	}


	public void setPlayType(String playType) {
		this.playType = playType;
	}


	@Override
	public String toString() {
		StringBuilder builder = new StringBuilder();
		builder.append(date).append(type).append(awayTeam).append(score);
		builder.append(homeTeam).append(awayMaxScore).append(homeMaxScore);
		builder.append(battlefield).append(statistics).append(video).append(photos);
		return builder.toString();
	}
	
	public void setCase(int i, String content){
		switch (i) {
		case 0:
			date = content;
			break;
		case 1:
			type = content;
			break;
		case 2:
			awayTeam = content;
			break;
		case 3:
			score = content;
			break;
		case 4:
			homeTeam = content;
			break;
		case 5:
			awayMaxScore = content;
			break;
		case 6:
			homeMaxScore = content;
			break;
		case 7:
			battlefield = content;
			break;
		case 8:
			statistics = content;
			break;
		case 9:
			video = content;
			break;
		case 10:
			photos = content;
			break;
		}
	}
	
}

然后就是解析赛事内容:

package com.jwzhangjie.parser.ranking;

import java.util.ArrayList;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import com.jwzhangjie.model.CompetitionNoticeModel;

/**
 * 赛程解析
 * @author jwzhangjie
 */
public class CompetitionNotice {

	public ArrayList<CompetitionNoticeModel> getCompetitionNotice(String url){
		ArrayList<CompetitionNoticeModel> listData = new ArrayList<CompetitionNoticeModel>();
		try {
			Document doc = Jsoup.connect(url).get();
			Element table980middle = doc.getElementById("table980middle");
			Elements tableText = table980middle.getElementsByTag("tbody");
			if (tableText != null && tableText.size() > 0 ) {
				Elements trs = tableText.first().getElementsByTag("tr");
				for (Element tr : trs) {
					CompetitionNoticeModel model = new CompetitionNoticeModel();
					Elements tds = tr.getElementsByTag("td");
					int count = tds.size();
					for (int i = 0; i < count; i++) {
						Element td = tds.get(i);
						model.setCase(i, td.text());
					}
					listData.add(model);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return listData;
	}
}

解析结果如下:我解析的网页是http://nba.sports.sina.com.cn/match_result.php

12月08日星期日类型客队比分主队客队最高分主队最高分战报统计视频组图
08:00 完场常规赛掘金103-9276人罗宾逊 20罗腾 20战报统计视频组图
08:30 完场常规赛快船82-88骑士克劳福德 19汤普森 20战报统计视频组图
09:00 完场常规赛活塞92-75公牛詹宁斯 33吉布森 21战报统计视频组图
09:00 完场常规赛勇士108-82灰熊汤普森 30米勒 16战报统计视频组图
09:00 完场常规赛热火103-82森林狼詹姆斯 21马丁 19战报统计视频组图
09:30 完场常规赛篮网90-82雄鹿洛佩斯 32梅奥 22战报统计视频组图
09:30 完场常规赛步行者111-100马刺乔治 28莱昂纳德 18战报统计视频组图
10:00 完场常规赛国王112-102爵士考辛斯 28海沃德 22战报统计视频组图
11:00 完场常规赛小牛108-106开拓者诺维茨基 28利拉德 32战报统计视频组图
12月09日星期一类型客队比分主队客队最高分主队最高分战报统计视频组图
01:00 未赛常规赛凯尔特人0-0尼克斯直播统计?组图
07:00 未赛常规赛热火0-0活塞直播统计?组图
08:00 未赛常规赛魔术0-0火箭直播统计?组图
08:00 未赛常规赛步行者0-0雷霆直播统计?组图
10:30 未赛常规赛猛龙0-0湖人直播统计?组图
12月10日星期二类型客队比分主队客队最高分主队最高分战报统计视频组图
08:00 未赛常规赛勇士0-0山猫直播统计?组图
08:00 未赛常规赛快船0-076人直播统计?组图
08:00 未赛常规赛掘金0-0奇才直播统计?组图
09:00 未赛常规赛魔术0-0灰熊直播统计?组图
10:00 未赛常规赛开拓者0-0爵士直播统计?组图
11:00 未赛常规赛小牛0-0国王直播统计?组图
12月11日星期三类型客队比分主队客队最高分主队最高分战报统计视频组图
08:00 未赛常规赛尼克斯0-0骑士直播统计?组图
08:00 未赛常规赛热火0-0步行者直播统计?组图
08:00 未赛常规赛马刺0-0猛龙直播统计?组图
08:30 未赛常规赛雷霆0-0老鹰直播统计?组图
08:30 未赛常规赛凯尔特人0-0篮网直播统计?组图
08:30 未赛常规赛森林狼0-0活塞直播统计?组图
09:00 未赛常规赛雄鹿0-0公牛直播统计?组图
11:30 未赛常规赛太阳0-0湖人直播统计?组图
12月12日星期四类型客队比分主队客队最高分主队最高分战报统计视频组图
08:00 未赛常规赛魔术0-0山猫直播统计?组图
08:30 未赛常规赛快船0-0凯尔特人直播统计?组图
09:00 未赛常规赛雷霆0-0灰熊直播统计?组图
09:00 未赛常规赛马刺0-0雄鹿直播统计?组图
09:00 未赛常规赛76人0-0森林狼直播统计?组图
09:00 未赛常规赛活塞0-0鹈鹕直播统计?组图
09:00 未赛常规赛公牛0-0尼克斯直播统计?组图
11:00 未赛常规赛爵士0-0国王直播统计?组图
11:30 未赛常规赛小牛0-0勇士直播统计?组图
12月13日星期五类型客队比分主队客队最高分主队最高分战报统计视频组图
09:00 未赛常规赛快船0-0篮网直播统计?组图
11:30 未赛常规赛火箭0-0开拓者直播统计?组图
12月14日星期六类型客队比分主队客队最高分主队最高分战报统计视频组图
08:00 未赛常规赛山猫0-0步行者直播统计?组图
08:00 未赛常规赛骑士0-0魔术直播统计?组图
08:00 未赛常规赛76人0-0猛龙直播统计?组图
08:30 未赛常规赛奇才0-0老鹰直播统计?组图
08:30 未赛常规赛尼克斯0-0凯尔特人直播统计?组图
08:30 未赛常规赛篮网0-0活塞直播统计?组图
09:00 未赛常规赛灰熊0-0鹈鹕直播统计?组图
09:00 未赛常规赛湖人0-0雷霆直播统计?组图
09:30 未赛常规赛公牛0-0雄鹿直播统计?组图
09:30 未赛常规赛森林狼0-0马刺直播统计?组图
10:00 未赛常规赛爵士0-0掘金直播统计?组图
10:00 未赛常规赛国王0-0太阳直播统计?组图
11:30 未赛常规赛火箭0-0勇士直播统计?组图

对比原数据:

12月08日星期日 类型 客队 比分 主队 客队最高分 主队最高分 战报 统计 视频 组图 网络视频/电视直播
08:00 完场 常规赛 掘金 103-92 76人 罗宾逊 20 罗腾 20 战报 统计 视频 组图  
08:30 完场 常规赛 快船 82-88 骑士 克劳福德 19 汤普森 20 战报 统计 视频 组图  
09:00 完场 常规赛 活塞 92-75 公牛 詹宁斯 33 吉布森 21 战报 统计 视频 组图  
09:00 完场 常规赛 勇士 108-82 灰熊 汤普森 30 米勒 16 战报 统计 视频 组图  
09:00 完场 常规赛 热火 103-82 森林狼 詹姆斯 21 马丁 19 战报 统计 视频 组图 新浪体育
09:30 完场 常规赛 篮网 90-82 雄鹿 洛佩斯 32 梅奥 22 战报 统计 视频 组图  
09:30 完场 常规赛 步行者 111-100 马刺 乔治 28 莱昂纳德 18 战报 统计 视频 组图 CCTV5
10:00 完场 常规赛 国王 112-102 爵士 考辛斯 28 海沃德 22 战报 统计 视频 组图  
11:00 完场 常规赛 小牛 108-106 开拓者 诺维茨基 28 利拉德 32 战报 统计 视频 组图  
12月09日星期一 类型 客队 比分 主队 客队最高分 主队最高分 战报 统计 视频 组图 网络视频/电视直播
01:00 未赛 常规赛 凯尔特人 0-0 尼克斯 直播 统计   组图  
07:00 未赛 常规赛 热火 0-0 活塞 直播 统计   组图  
08:00 未赛 常规赛 魔术 0-0 火箭 直播 统计   组图 新浪体育
08:00 未赛 常规赛 步行者 0-0 雷霆 直播 统计   组图  
10:30 未赛 常规赛 猛龙 0-0 湖人 直播 统计   组图 新浪体育
12月10日星期二 类型 客队 比分 主队 客队最高分 主队最高分 战报 统计 视频 组图 网络视频/电视直播
08:00 未赛 常规赛 勇士 0-0 山猫 直播 统计   组图  
08:00 未赛 常规赛 快船 0-0 76人 直播 统计   组图 新浪体育
08:00 未赛 常规赛 掘金 0-0 奇才 直播 统计   组图  
09:00 未赛 常规赛 魔术 0-0 灰熊 直播 统计   组图  
10:00 未赛 常规赛 开拓者 0-0 爵士 直播 统计   组图  
11:00 未赛 常规赛 小牛 0-0 国王 直播 统计   组图  
12月11日星期三 类型 客队 比分 主队 客队最高分 主队最高分 战报 统计 视频 组图 网络视频/电视直播
08:00 未赛 常规赛 尼克斯 0-0 骑士 直播 统计   组图  
08:00 未赛 常规赛 热火 0-0 步行者

抱歉!评论已关闭.