#!/usr/bin/python
#coding:utf-8
import urllib2
import re
#请求目标网址
url = 'file:///data/workspace/movie_review.htm'
#设置请求头
req = urllib2.Request(url, headers={'User-Agent':'Magic Browser'})
#打开这个请求并读取
webpage = urllib2.urlopen(req)
strw = webpage.read()
#因为数据有部分重复,切取了唯一电影的部分,我们只截取左边这部分
s = strw.find('正在上映')
if s == -1:
print 'not find start'
e = strw.find('即将上映')
if e == -1:
print 'not find end'
#获取正在上映和即将上映之间内容
tmp = strw[s: e]
#利用正则提取评分标签,观察评分的html代码得出。
rank = re.findall('<span class='subject-rate'>\d?.*\d?</span>', tmp)
sum = 0.0
#提取评分,累加,并计算平均值
for x in rank:
sum += float(re.findall('\d+.*\d', x)[0].replace(' ', ''))
#计算其平均值
avg = sum / len(rank)
#输出平均值,将平均值写入文件,保留四位小数
print '%.4f'%(avg)
file = open('/data/workspace/score.txt','w')
file.write('%.4f'%(avg))
#coding:utf-8
import pandas as pd
import datetime
#读取原始文件,并给各列添加标记列
df=pd.read_csv('/data/workspace/film_log.csv',delimiter=';',encoding='utf-8',names=[u'电影名称',u'上线时间',u'下线时间',u'公司',u'导演',u'主演',u'类型',u'票房',u'城市'])#
# print df[df.isnull().values] #查看数据空值
ans0301=df[df[u'电影名称']==u'《冲上云霄》'].loc[:,[u'电影名称',u'上线时间',u'下线时间',u'票房',u'城市']] #筛选影片《冲上云霄》数据
ans0301=ans0301.drop_duplicates().reset_index().drop('index',axis=1) #去重清洗
ans0301[u'票房']=ans0301[u'票房'].str.split(u')').str[1].astype(float) #清洗票房列数据。且转为float类型
ans0301[u'上线时间']=pd.to_datetime(ans0301[u'上线时间']) #将时间列转换类时间类型
ans0301[u'下线时间']=pd.to_datetime(ans0301[u'下线时间'])
day=(ans0301[u'下线时间'].max()-ans0301[u'上线时间'].min()).days+1 #上映总天数
# print day
# print ans0301
box=ans0301[u'票房'].sum() #总票房
avg_box=box/day #平均票房
f=open('/data/workspace/box.txt','w')
f.write('%Ld,%0.6f'%(day,avg_box)) #按要求存入box.txt文件
f.close()
#coding:utf-8
import pandas as pd
import datetime
import matplotlib.pyplot as plt
#读取原始文件,按照;切分,设置编码格式utf-8,并给各列添加标记列
df=pd.read_csv('/data/workspace/film_log.csv',delimiter=';',encoding='utf-8',names=[u'电影名称',u'上线时间',u'下线时间',u'公司',u'导演',u'主演',u'类型',u'票房',u'城市'])
# print df[df.isnull().values]
film=[u'《冲上云霄》',u'《少年班》',u'《紫霞》'] #在列表存放三部影片
dfz=pd.DataFrame(columns=[u'票房'])
zong_box=[]
for k in range(len(film)):
ans0302=df[df[u'电影名称']==film[k]].loc[:,[u'电影名称',u'上线时间',u'下线时间',u'票房',u'城市']] #筛选三部影片数据
ans0302 = ans0302.drop_duplicates().reset_index().drop('index', axis=1) #去重清洗
ans0302[u'票房'] = ans0302[u'票房'].str.split(u')').str[1].astype(float) #清洗票房列数据。且转为float类型
ans0302[u'上线时间'] = pd.to_datetime(ans0302[u'上线时间']) #将时间列转换类时间类型
ans0302[u'下线时间'] = pd.to_datetime(ans0302[u'下线时间'])
day = (ans0302[u'下线时间'