據(jù)采集中,發(fā)布時間解析的正確與否,直接關(guān)系著使用數(shù)據(jù)的產(chǎn)品的質(zhì)量。一般在做做大規(guī)模數(shù)據(jù)爬取時,都會整理一下發(fā)布時間規(guī)律,如特殊關(guān)鍵字,時間正則等。下面介紹一下,我在工作中處理的具體步驟。
1:收集發(fā)布時間標識詞
一般情況下,標識發(fā)布時間的關(guān)鍵詞有:更新時間:、發(fā)布日期:、發(fā)表時間:、發(fā)稿時間:、發(fā)布于:、編輯日期:、發(fā)布于:等。通過這些特殊關(guān)鍵詞,可以高效、準確的判斷出時間所在位置,提供解析的準確率。
2:收集發(fā)布時間正則
發(fā)布時間的正則表達式,一般情況下主要有以下十一種發(fā)布時間獲取規(guī)則:
(\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2})
(\d{2}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2})
(\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2})
(\d{2}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2})
(\d{4}-\d{1,2}-\d{1,2})
(\d{2}-\d{1,2}-\d{1,2})
(\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2})
(\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2})
(\d{1,2}:\d{1,2}:\d{1,2})
(\d{1,2}-\d{1,2})
(\d{1,2}:\d{1,2})
使用的過程中,需要注意這九種表達式的順序。由于我在使用過程中,發(fā)布時間標識詞與正則表達式,是在一個系統(tǒng)中統(tǒng)一管理。
所以,對每個標識詞和表達式進行了排序,排序值越小,越先處理。如下如: 正則表達式、 關(guān)鍵詞。
3:處理特殊時間格式
特殊時間格式如:“分鐘前”、“小時前”、“天前”、“周前”、“今天”等。主要把這些時間轉(zhuǎn)換為正常的時間格式,便與后續(xù)的解析。
4:HTML源碼預處理
1:刪除多余的HTML標簽
刪除meta、style、script、link、select、input、button、img等標簽,消除這些標簽中的值對解析的影響;
2:特殊標簽處理
替換“”、"<span"、“”等為“ ”
3:特殊字符處理
主要是對時間進行統(tǒng)一化、規(guī)范化。如“年”、“\”、“/”、“月”等替換為“-”;“日”、"T"等替換為“ ”等;
4:刪除HTML所有的標簽、特殊符號、字母等
5:根據(jù)收集的發(fā)布時間說明詞,截取HTML源碼
if self.keywords !=None:
for kw in self.keywords:
try:
index=0
if kw in html:
index=html.index(kw)
begin=0;
end=len(html)
if(index > 1):
end=index + 100
if index >=100:
begin=index - 100
else:
begin=index
html=html[begin:end]
break
except : print(traceback.format_exc())
6:替換所有的漢字為“ ”,同時規(guī)范字符串
5:解析發(fā)布時間
1:根據(jù)收集的時間正則,解析發(fā)布時間
2:根據(jù)獲取時間時使用的正則,規(guī)范發(fā)布時間
3:判斷當前時間是否合法。主要是判斷解析出的時間是否大于當前時間,如果大于,則用當前時間填充。避免影響后續(xù)產(chǎn)品的數(shù)據(jù)使用。
自清先生在《匆匆》一文中,形容時間是在早晨太陽光里悄悄流逝;是在洗手的時候隨水流逝去;是在睡覺時小心翼翼的從我們身上跨過,最后我們的日子便一去不復返了。時間對所有人都是公平的,你的一分鐘和他們的分鐘沒有任何區(qū)別。但是管理好時間是很重要的。時間線是什么呢?就是以時間點為軸,記錄在各個時間點上發(fā)生的事情。
時間線的定義很簡單,但是用法,目的各不相同,只需根據(jù)自己的需求繪制就行。
1.可以用來作為手賬的時間軸,記錄過去生活里的點點滴滴,看過的電影,走過的路等等。等到下次在看見時,便能回想起那段時光。
2.可以用來規(guī)劃未來的日程安排,甚至還可以以小時為單位,詳細的在井井有條的規(guī)劃著這一整天的生活。同時也可以督促自己來完成這些任務(wù),成為更好的人。
3.可以用來記錄談戀愛中的每個“第一次”,第一次說我愛你;第一次一起看電影;第一次見家長等等,同記錄生活類似,只不過更加具體到了一件事上,通過時間線來將生活數(shù)據(jù)化,但是看著這些時間點和文字又能回想起當時羞怯的心情。
下方提供的時間線均為來源于“億圖圖示”網(wǎng)站。形式各種各樣,保持實用性的同時,也不失美觀。
如何繪制一幅時間線?首先,需要明確這幅時間線是用來記錄什么,然后就只需根據(jù)按照下列操作步驟,一幅時間線就可繪制完成。
第一步:下載“億圖圖示”軟件,或者通過瀏覽器訪問在線版億圖圖示。打開軟件,就可以開始作圖了。
第二步:新建一幅時間線。依次點擊“商務(wù)”-“時間線”,從下方億圖圖示所提供的模板中選擇一個打開即可。
第三步:在畫布左側(cè)有提供多種基本繪圖形狀,背景和時間線,如果對當前所選模板不滿意,便可以從左側(cè)中雙擊選取適宜的形狀,背景和時間線來繪制出一幅新的時間線。
第四步:雙擊選中畫布模板中的文字即可修改。如果需要添加新的文本,可以點擊上方的文本按鈕來新添一個文字模板。
第五步:時間線繪制完成后,可以點擊右上角的保存,打印,導出等按鈕。保存繪制完成后的時間線,選擇將作品導出為圖片,PDF,Excel,HTML等格式。
億圖圖示是一款適用于商務(wù)辦公,戰(zhàn)略規(guī)劃,市場分析,人力資源,工程管理的綜合辦公繪圖軟件的國產(chǎn)軟件。支持多種電腦系統(tǒng),也支持線上網(wǎng)頁操作繪圖。在億圖圖示中可以繪制諸如時間線,系統(tǒng)圖、組織結(jié)構(gòu)圖、商務(wù)圖表等260余種圖表。此外億圖圖示也提供十分豐富的模板和例子,這樣使用者不用從頭一步一步設(shè)計繪制,只要選擇好適合需求的模板,對其進行適當修改完善,即可繪制出直觀大方的圖表。當然,也可以全程自行設(shè)計頁面,選擇更多樣。
1.符合國人需求:億圖圖示是一款出生于中國深圳的國產(chǎn)軟件,已經(jīng)經(jīng)過了16年的更新迭代,作為一款成熟的辦公軟件億圖圖示可以跨平臺綜合辦公繪,而且無論界面或功能上都比較貼合國人的使用習慣,全中文界面簡單明了。
2.支持多種格式導入:繪制表格類模板時,不僅可以一鍵將導入Visio,SVG文件,還可以批量轉(zhuǎn)化Visio文件到Edraw文件,輕松實現(xiàn)文件數(shù)據(jù)轉(zhuǎn)移,避免時間浪費。
3.支持多種格式導出:除了各種圖片格式,億圖圖示還支持保存為Html,PDF,SVG,Microsoft Word, PowerPoint,Excel等多種格式。在常見的軟件中應用都可以找到與之相匹配的文件格式。
4.軟件操作簡單舒適,易上手:億圖圖示界面簡單明了,功能強大。無需自行繪制,因為億圖圖示的一大特色便是自帶模版,通過拖拽式操作,沒有繪畫基礎(chǔ)的新手也能迅速繪制出有水準的圖表。
5.豐富的繪圖模板:億圖圖示擁有的260中不同類型圖標的豐富模板,據(jù)統(tǒng)計內(nèi)置超過26000種圖形模板和矢量符號,供用戶任意選擇,修改完善模板,搭建起符合要求的演示模板。
6.便捷式分享:圖表繪制完成后,不僅可以以多種格式保存,用戶不會被格式的問題所困擾,還可以一鍵分享至微信,朋友圈等。此外,新版的億圖圖示還提供在線多人協(xié)作模式,提升工作效率。
文為原創(chuàng)分享,轉(zhuǎn)載請注明出處。
即時通訊IM應用中的聊天消息時間顯示是個再常見不過的需求,現(xiàn)在都講究用戶體驗,所以時間顯示再也不能像傳統(tǒng)軟件一樣簡單粗地暴顯示成“年/月/日 時:分:秒”這樣。所以,市面上幾乎所有的IM都會對聊天消息的時間顯示格化做人性化處理,從而提升用戶體驗(使用感受會明顯友好)。
這兩天正在繼續(xù)開發(fā)RainbowChat-Web產(chǎn)品,所以正需要這樣的代碼。但經(jīng)過在即時通訊網(wǎng)的論壇和技術(shù)交流群里詢問,以及網(wǎng)上的所謂仿微信例子,都不符合要求。這些例子要么簡陋粗暴(有邏輯bug硬傷)、要么并不完整(可能只是隨手寫的練手代碼,并不適合放到產(chǎn)品中),所以本著做技術(shù)精益求精的態(tài)度,沒有現(xiàn)成的輪子可用,那就只能造輪子了。
那么,按怎樣的顯示邏輯來實現(xiàn)呢?作為移動端IM的王者,微信無疑處處是標桿,所以本次的消息時間顯示格式,直接參照微信的實現(xiàn)邏輯準沒錯(隨大流雖然沒個性,但不至于非主流)。
* 提示:本文中的代碼實現(xiàn),是從 RainbowChat 和 RainbowChat-Web 兩個IM產(chǎn)品中扒出來簡化后的結(jié)果,是基于完全相同的算法邏輯分別用OC、Java和JavaScript實現(xiàn)的。如您覺得有用,可以改改直接用于您的產(chǎn)品,如您有更好的建議請直接回復和評論。代碼僅供參考,不足之外,還請見諒!
(本文同步發(fā)布于:http://www.52im.net/thread-2371-1-1.html)
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。