查看喜爱球队一周比赛安排

平时上班比較忙,常常错过支持的球队的比赛。所以可以知道支持的球队本周都有哪些比赛将会是一个不错的选择,于是自己动手实现了这个想法。

初学Python,练习的缘故,部分功能使用python实现。

整体思想就是从指定站点下载下比赛信息,然后分析之。

C++部分,主要实现文件的下载:

#include <windows.h>
#include <iostream>
#include <URLMON.H>
#include <FSTREAM>
#include <TIME.H>

using namespace std;

#pragma  comment(lib, "ws2_32.lib")
#pragma comment(lib,"urlmon.lib")

int main()
{
	char likeTeam[1024];
	ifstream fread( "likeTeamList.txt" );
	if( !fread )
	{
		cout<<"Can't open likeTeamList.txt!"<<endl;
		system( "PAUSE" );
		return 0;
	}
	fread.getline( likeTeam, 1024, '\n' );
	fread.close();
	cout<<"赛事名称           开赛时间       主    队          客    队"<<endl;
	time_t tnow = time( NULL );
	struct tm* tmNow = localtime( &tnow );
	int wNow = tmNow->tm_wday;
	if( wNow == 0 ) wNow = 7;
	for( ; wNow != 8; wNow++ )
	{
		char urlAddress[100];
		sprintf( urlAddress, "http://www.uhchina.com/zuqiusaicheng/%dyue%dri.htm", tmNow->tm_mon + 1, tmNow->tm_mday );
		char saveName[50];
		sprintf( saveName, "%dyue%dri.txt", tmNow->tm_mon + 1, tmNow->tm_mday );
		HRESULT hr = URLDownloadToFile( 0, urlAddress, saveName, 0, NULL );
		if( hr != S_OK )
		{
			cout<<"download url "<<urlAddress<<" failure!"<<endl;
		}
		else
		{

			char cCmd[1024];
			sprintf( cCmd, "matchSchedule.py %s %s", saveName, likeTeam );
			system( cCmd );
			sprintf( cCmd, "del %s", saveName );
			system( cCmd );
		}
		tnow += 24 * 60 * 60;
        tmNow = localtime( &tnow );
	}
	cout<<"赛程输出完成!"<<endl;
	getchar();
	return 0;
}

分析文件使用的是Python脚本----matchSchedule.py :

#coding:   utf-8
import codecs
import sys

loveTeam = []
for i in range( 2, len( sys.argv ) ) :
    loveTeam.append( sys.argv[i] )
fread = codecs.open( sys.argv[1], "rU", "utf-8" )
n = 0
findNum = 0
for line in fread:
    n += 1
    if n == 63 :
        break
while 1:
    ltemp = fread.readline()
    templist = ltemp.split('>')
    if ltemp.find( 'onclick' ) == -1 :
        matchName = templist[2][0:templist[2].find('<')]
        matchTime = templist[5][0:templist[5].find('<')]
    else :
        matchName = templist[1][0:templist[1].find('<')]
        matchTime = templist[3][0:templist[3].find('<')]
    ltemp = fread.readline()
    templist = ltemp.split('>')
    if ltemp.find( 'class=\"gray\"' ) == -1 :
        homeName = templist[2][0:templist[2].find('<')]
    else :
        homeName = templist[4][0:templist[4].find('<')]
    ltemp = fread.readline()
    templist = ltemp.split('>')
    visiterName =  templist[2][0:templist[2].find('<')]
    fread.readline()
    fread.readline()
    fread.readline()
    fread.readline()
    ltemp = fread.readline()
    for team in loveTeam :
        if team == homeName or team == visiterName :
            findNum += 1
            print( '%-16s%-16s%-16s%-16s' % ( matchName, matchTime, homeName, visiterName ) )
    if ltemp.find('个赛事共同拥有') != -1 or findNum == 4 :
        break
fread.close()

喜爱的球队存储在likeTeamList.txt里,里面仅仅有一行,记录支持的球队。用空格隔开,形如:

阿森纳 拜仁 北京国安乐视 中国

输出结果:



时间: 2024-11-10 08:13:55

查看喜爱球队一周比赛安排的相关文章

算法训练 比赛安排

时间限制:1.0s   内存限制:512.0MB 问题描述 设有有2 n(n<=6)个球队进行单循环比赛,计划在2 n – 1天内完成,每个队每天进行一场比赛.设计一个比赛的安排,使在2 n – 1天内每个队都与不同的对手比赛. 输入格式 输入文件matchplan.in共一行,输入n的数值. 输出格式 输出文件matchplan.out共(2 n – 1)行,第i行输出第i天的比赛安排. 格式为:<i> A-B,C-D,…….其中i是天数,A,B分别为比赛双方的编号,每行共2 n-1个

比赛安排

//c语言:A.B.C ,3个人与X.Y.Z ,3个人比赛,A不和X比,C不和X.Z比,编程找出比赛安排. #include<stdio.h>int main(){ char a,b,c; for(a='x';a<='z';a++) { for(b='x';b<='z';b++) { for(c='x';c<='z';c++) { if(a!=b&&a!=c&&b!=c&&a!='x'&&c=='y') { pr

考勤助手——第十一周工作安排

本周需完成数据库设计,包括数据库需求分析,设计E-R图,数据库结构的实现 安排如下: 1.薄晰月:对考勤助手的数据库进行大体架构,即考勤助手数据库1.0版本,供小组成员进行完善. 根据小组成员提出的数据库2.0版本进行讨论 制定出考勤助手——数据库设计的最终版本 2.顾恭:  分析数据库2.0版本的不足  参与数据库最终3.0版本的设计. 3.潘禹桐:提出完善方案,进行数据库2.0版本的设计. 4.李雨墨:参与并提交数据库2.0版本的设计方案.

如何查看Codeforces的GYM中比赛的数据

前置条件:黄名(rating >= 2100) 或者 紫名(rating >= 1900)并且打过30场计分的比赛. 开启:首先打开GYM的界面,如果符合要求会在右边展示出一个Coach rights框,点击确定. 之后右边会变成问是否开启coach mode, 点击yes之后就可以愉快的看gym数据了QAQ 原文地址:https://www.cnblogs.com/pkgunboat/p/11478844.html

暑假集训第一周比赛G题http://acm.hust.edu.cn/vjudge/contest/view.action?cid=83146#problem/G

G - 向 Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Description 把一个字符三角形掏空,就能节省材料成本,减轻重量,但关键是为了追求另一种视觉效果.在设计的过程中,需要给出各种花纹的材料和大小尺寸的三角形样板,通过电脑临时做出来,以便看看效果. Input 每行包含一个

暑假集训第一周比赛C题http://acm.hust.edu.cn/vjudge/contest/view.action?cid=83146#problem/C

C - 学 Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Description Ray又对数字的列产生了兴趣: 现有四张卡片,用这四张卡片能排列出很多不同的4位数,要求按从小到大的顺序输出这些4位数. Input 每组数据占一行,代表四张卡片上的数字(0<=数字<=9),如

LightOJ 1317 第六周比赛A题

A - A Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Description You probably have played the game "Throwing Balls into the Basket". It is a simple game. You have to throw a ball into a basket from a certain dista

CodeForces 478B 第六周比赛B题

B - B Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Description n participants of the competition were split into m teams in some manner so that each team has at least one participant. After the competition each pair o

CodeForces 569A 第六周比赛C踢

C - C Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Status Practice CodeForces 569A Description Little Lesha loves listening to music via his smartphone. But the smartphone doesn't have much memory, so Lesha lis