通過firefox的web控制台檢視html的標籤資訊,確定了需要抓取的內容格式:
之後通過python的beautifulsoup模組來對檔案內容進行解析和重要資料的提取
python**的第乙個函式主要是對html檔案讀取以後解析相關的資料,以**號碼為key構造乙個dict物件來儲存資料,這裡需要提取的是對於指定號碼的主叫和被叫時間的記錄,所以選擇了乙個list來儲存資料,list物件的第一位存下主叫時間,第二位存下被叫時間,**一角如下:
#!/usr/bin/python
#coding:utf-8
from bs4 import beautifulsoup
'''import sys
reload(sys)
sys.setdefaultencoding('utf-8')'''
#解析賬單html檔案,返回資訊dict物件,key為**號碼,value為乙個list物件,第一位是主叫時間,第二位是被叫時間
def parsehtml(filename):
soup = beautifulsoup(open(filename),'lxml')
soup1 = beautifulsoup("主叫 ",'lxml')
tmp = soup1.find_all('td')
flag1 = str(unicode(tmp[0].string))
soup2 = beautifulsoup('被叫 ','lxml')
tmp = soup2.find_all('td')
flag2 = str(unicode(tmp[0].string))
tr_tags = soup.find_all('tr',class_='content2')
infos = dict()
for tr_tag in tr_tags:
info_list = list()
td_tags = tr_tag.find_all('td',class_='talbecontent1')
if len(td_tags) <= 3:
continue
for td_tag in td_tags:
tele = str(info_list[5])
call_type = str(info_list[4])
call_time = info_list[2]
times = splitetime(call_time)
if tele in infos.keys():
if call_type == flag1:
infos[tele][0] += times
else:
infos[tele][1] += times
else:
time_list = list([0,0])
infos[tele] = time_list
if str(call_type) == flag1:
infos[tele][0] = times
else:
infos[tele][1] = times
return infos
#將字元型別的通話時間轉換為秒為單位,返回int物件
def splitetime(time_str):
hour_list = time_str.split('小時')
hour = 0
minute_string = ''
if len(hour_list) == 1:
minute_string = hour_list[0]
else:
minute_string = hour_list[1]
hour = int(hour_list[0])
#print hour
minute_list = minute_string.split('分')
minute = 0
sec_string = ''
if len(minute_list) == 1:
sec_string = minute_list[0]
else:
sec_string = minute_list[1]
minute = int(minute_list[0])
#print minute
sec_list = sec_string.split('秒')
通過執行指令碼以後可以看到本月通訊排名前三位的是哪幾個號碼,這裡僅提供乙個簡單的例項,如果大家有興趣,可以拿到資料以後做其他方面的分析,最後也可以通過圖表形式直觀的顯示出來,如果有心的話還可以分析每個月的賬單,將資料存入自己個人的資料庫中,方便以後有需要的時候讀取來分析。
博主自己的檔案放在github上,位址如下:luuuyi/analysis_bill
移動端web頁面使用字型分析
一直不知道手機端用的什麼字型,只是覺得類似雅黑,直到有一次設計師問到設計移動web頁面該用什麼字型才嚴肅地想起這個問題。前人已栽樹,後人我就直接轉來吧 回想2年前剛開始接觸手機專案,接到psd稿後,發現視覺設計師們喜歡用微軟雅黑作為中文字型進行設計,於是我寫頁面的時候也定義 font family ...
使用cProfile分析Python程式效能
cprofile 基於lsprof的用c語言實現的擴充套件應用,執行開銷比較合理,適合分析執行時間較長的程式,推薦使用這個模組 profile 純python實現的效能分析模組,介面和cprofile一致。但在分析程式時增加了很大的執行開銷。不過,如果你想擴充套件profiler的功能,可以通過繼承...
Python 中 with 的使用分析
通常在python中使用with語句的地方在檔案的讀寫,它的作用是即使出現bug也可以自動關閉檔案釋放資源。而with的實質是上下文管理器,想要通過with使用的物件必須包含 enter 方法和 exit 方法。class a def enter self a 1 return a def exit...