本文实例讲述了Python获取央视节目单的方法。分享给大家供大家参考。具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
#! /usr/bin/python
# -*- coding: utf-8 -*-
import urllib,re,unicodedata,string,sys
from time import strftime,localtime
channel = { "1" : "CCTV-1" , "2" : "CCTV-2" , "3" : "CCTV-3" , "4" : "CCTV-4亚洲" ,
"5" : "CCTV-4欧洲" , "6" : "CCTV-4美洲" , "7" : "CCTV-5" , "8" : "CCTV-6" ,
"9" : "CCTV-7" , "10" : "CCTV-8" , "11" : "CCTV-9" , "12" : "CCTV-10" ,
"13" : "CCTV-11" , "14" : "CCTV-12" , "15" : "CCTV新闻" , "16" : "CCTV少儿" ,
"17" : "CCTV音乐" , "18" : "CCTV_E" , "19" : "CCTV-F" , "20" : "CCTV-高清" }
if __name__ = = "__main__" :
print "@@"
print "@@ 你可以在命令行后输入数字(1-20)来选择频道 "
print "@@ 通过在命令行后键入help获取频道列表"
print "@@"
if len (sys.argv) = = 1 :
Select = "8"
else :
if sys.argv[ 1 ] = = "help" :
for i in range ( len (channel)):
print "%3d : %11s" % (i + 1 , channel[ "%s" % (i + 1 )]),
if (i % 4 = = 3 ):
print ""
sys.exit( 0 )
if string.atoi(sys.argv[ 1 ])> 20 or string.atoi(sys.argv[ 1 ])< = 0 :
print "Out of Range. Please Select 1-20."
sys.exit( 0 )
else :
Select = sys.argv[ 1 ]
print '正在获取节目单,请稍后...'
date = strftime( '%Y%m%d' ,localtime())
response = urllib.urlopen( "http://tv.cctv.com/soushi/28/0" + Select + "/" + date + ".shtml" )
Result = response.read()
#list=re.findall(r"<div class='tlb_right'><div class='l'>(.+?)<script",Result,re.S)
list = re.findall(r "上午节目(.+?)<script" ,Result,re.S)
list2 = re.findall(r "<li>(.+?)</li>" , list [ 0 ],re.S)
morning = []
afternoon = []
listnum = 0
for i in range ( len (list2)):
i = re.sub( '<.+?>' ,'',list2[i])
if string.atoi(i[: 2 ])> = 12 : #将上午的节目于下午的节目分开
afternoon.append(i)
else :
morning.append(i)
if len (morning)> len (afternoon):
listnum = len (morning)
else :
listnum = len (afternoon)
print "-" * 80 ,
print " " * 13 + "上午节目" + " " * 26 + "下午节目"
print " " * 14 + "========" + " " * 26 + "========"
for i in range (listnum):
if (i< len (morning)):
print "%-4s %-29s" % (morning[i][: 5 ],morning[i][ 5 :]),
else :
print " " * 35 ,
if (i< len (afternoon)):
print "%-4s %-30s" % (afternoon[i][: 5 ],afternoon[i][ 5 :])
else :
print " " * 37
print "-" * 80 ,
print " " * 24 ,strftime( "%Y年%m月%d日" ),
print "%s 节目单" % channel[Select]
|
希望本文所述对大家的Python程序设计有所帮助。