小時(shí)為單位統(tǒng)計(jì)每條線路價(jià)格變更平均時(shí)間(計(jì)算公式為:周期M=每次發(fā)生價(jià)格變 更時(shí)距離上一次變更的時(shí)間差的總和/變更次數(shù),當(dāng)計(jì)算結(jié)果有小數(shù)時(shí),直接抹去小數(shù)后 在整數(shù)位上加1即得周期M),例如:1小時(shí)、2小時(shí)、3小時(shí)…12小時(shí),最大為12小時(shí),將數(shù) 據(jù)存放數(shù)據(jù)庫(kù)中。針對(duì)各個(gè)旅游線路產(chǎn)品,通過(guò)計(jì)算其多次變化時(shí)間差的平均值,能夠獲得 產(chǎn)品鏈接的價(jià)格變化更新周期M。
[0024] 每個(gè)單位時(shí)間(本例中為每小時(shí))啟動(dòng)定時(shí)任務(wù),從數(shù)據(jù)庫(kù)中取出本輪需要抓取的 鏈接推送至周期抓取隊(duì)列中,爬蟲則去周期抓取隊(duì)列獲取鏈接抓取。獲取每輪需要抓取鏈 接列表算法為:記錄當(dāng)前抓取任務(wù)觸發(fā)的次數(shù)N,這說(shuō)明距離第一次抓取已經(jīng)過(guò)了 N小時(shí), 遍歷數(shù)據(jù)庫(kù)中所有鏈接,獲取各鏈接價(jià)格的更新周期Μ小時(shí),如果N能被Μ整除,則此鏈接 需要在這輪抓取任務(wù)中被抓取,將此鏈接推送到各周期抓取隊(duì)列中進(jìn)行價(jià)格抓取。例如:當(dāng) 前是定時(shí)任務(wù)第60次啟動(dòng),則更新時(shí)間為(1,2,3,4,5,6,10,12)小時(shí)的鏈接需要 被抓取,不同更新周期的產(chǎn)品鏈接應(yīng)分別存放至相應(yīng)的周期隊(duì)列中,周期隊(duì)列優(yōu)選為多個(gè), 本例中即設(shè)置有用于分開(kāi)存放更新時(shí)間分別為(1,2,3,4,5,6,10,12)小時(shí)的產(chǎn)品 鏈接的周期隊(duì)列。周期性抓取流程如圖3所示,能夠根據(jù)線路價(jià)格變化頻率動(dòng)態(tài)調(diào)整抓取 頻率,根據(jù)歷史抓取情況,分析不同線路在抓取第幾輪價(jià)格時(shí)發(fā)生價(jià)格變化,按照價(jià)格更新 頻率動(dòng)態(tài)調(diào)整周期隊(duì)列中的鏈接,實(shí)現(xiàn)價(jià)格變化較快的線路能更加快速的抓取最新的價(jià) 格。定時(shí)任務(wù)抓取的各鏈接產(chǎn)品價(jià)格的變更時(shí)間距離上一次變更的時(shí)間差也計(jì)入前述時(shí)間 差的總和中用來(lái)計(jì)算前述產(chǎn)品鏈接價(jià)格更新周期(顯然,當(dāng)變更時(shí)間差計(jì)入時(shí)間差總和時(shí), 計(jì)算公式中的變更次數(shù)也隨之加1),這樣能夠令更新周期的計(jì)算更為精確。
[0025] 當(dāng)用戶主動(dòng)請(qǐng)求比價(jià)時(shí),步驟如圖2所示,優(yōu)先判斷緩存信息中是否具有用戶需 要比價(jià)的線路產(chǎn)品的價(jià)格信息,如果沒(méi)有則需要去其他網(wǎng)站上實(shí)時(shí)獲取價(jià)格數(shù)據(jù),當(dāng)緩存 中存在價(jià)格信息時(shí)還要判斷緩存中的價(jià)格信息是否過(guò)期,過(guò)期時(shí)也需去其他網(wǎng)站上實(shí)時(shí)獲 取價(jià)格數(shù)據(jù)。緩存設(shè)置有過(guò)期時(shí)間,例如過(guò)期時(shí)間為半小時(shí),當(dāng)接收到用戶請(qǐng)求時(shí),例如用 戶當(dāng)前請(qǐng)求比價(jià)的產(chǎn)品列表中的各產(chǎn)品鏈接在緩存中的價(jià)格數(shù)據(jù)最近抓取時(shí)間距今在半 小時(shí)之內(nèi),則從緩存中直接獲得產(chǎn)品列表中各個(gè)產(chǎn)品對(duì)應(yīng)的價(jià)格即可;如已超過(guò)半小時(shí),則 需要利用實(shí)時(shí)抓取隊(duì)列來(lái)獲得最新價(jià)格,將當(dāng)前頁(yè)面上的相同(相似)線路產(chǎn)品隊(duì)列鏈接發(fā) 送到實(shí)時(shí)抓取隊(duì)列中,當(dāng)緩存中不具有用戶需要比價(jià)的線路產(chǎn)品的價(jià)格信息時(shí),將這些線 路產(chǎn)品鏈接發(fā)送到實(shí)時(shí)抓取隊(duì)列中。分布式的爬蟲系統(tǒng)此時(shí)從實(shí)時(shí)抓取隊(duì)列中取得鏈接, 從各鏈接中實(shí)時(shí)地獲取對(duì)應(yīng)的產(chǎn)品的最新價(jià)格數(shù)據(jù),將此價(jià)格數(shù)據(jù)返回給比價(jià)工具系統(tǒng), 價(jià)格數(shù)據(jù)顯示在頁(yè)面上以供用戶實(shí)時(shí)進(jìn)行比價(jià)。前述取得的價(jià)格數(shù)據(jù)和更新時(shí)間同時(shí)加入 緩存中。
[0026] 上述動(dòng)態(tài)調(diào)整抓取隊(duì)列的方法,保證價(jià)格變化較快的線路能更加頻繁地被抓取和 更新價(jià)格,而價(jià)格變化較慢的路線則無(wú)需被反復(fù)抓取價(jià)格,充分節(jié)約資源。
[0027] 本發(fā)明方案所公開(kāi)的技術(shù)手段不僅限于上述實(shí)施方式所公開(kāi)的技術(shù)手段,還包括 由以上技術(shù)特征任意組合所組成的技術(shù)方案。應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員 來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也視為 本發(fā)明的保護(hù)范圍。
【主權(quán)項(xiàng)】
1. 一種線路類旅游產(chǎn)品的實(shí)時(shí)比價(jià)方法,其特征在于,包括如下步驟: 步驟A,獲取旅游網(wǎng)站上的線路產(chǎn)品并從中抽取旅游相關(guān)數(shù)據(jù),所述旅游相關(guān)數(shù)據(jù)至少 包括出發(fā)地、目的地、行程信息、團(tuán)期信息、價(jià)格信息、交通信息中的一種或幾種的組合; 步驟B,篩選出相同出發(fā)地,相同目的地,相同出游天數(shù)的旅游線路產(chǎn)品作為候選的相 似產(chǎn)品,計(jì)算行程相似度、團(tuán)期相似度和價(jià)格相似度,并通過(guò)以下公式計(jì)算兩個(gè)旅游產(chǎn)品的 總和相似度: 行程相似度*行程權(quán)重+團(tuán)期相似度*團(tuán)期權(quán)重+價(jià)格相似度*價(jià)格權(quán)重; 所述行程相似度通過(guò)以下步驟進(jìn)行計(jì)算:將候選相似線路產(chǎn)品的行程信息作為輸入文 本,對(duì)文本進(jìn)行分詞后對(duì)詞語(yǔ)進(jìn)行詞性標(biāo)注,將行程中出現(xiàn)的地名的名詞提取出來(lái),利用名 詞和其詞頻組成該線路產(chǎn)品的特征向量,采用以下公式計(jì)算行程相似度:其中,A1, B1為線路產(chǎn)品的特征向量; 所述團(tuán)期相似度=A n B / A U B,其中A和B分別為兩條線路所有團(tuán)期的集合; 所述價(jià)格相似度根據(jù)根據(jù)下式進(jìn)行計(jì)算: price = I-(abs (averageA - averageB)/averageA+abs(averageA-averageB) / averageB)/2 其中averageA和averageB分別為線路A和線路B的平均價(jià)格; 通過(guò)以下公式計(jì)算總和相似度: 總和相似度=行程相似度*行程權(quán)重+團(tuán)期相似度*團(tuán)期權(quán)重+價(jià)格相似度*價(jià)格權(quán) 重, 當(dāng)總和相似度達(dá)到或超過(guò)設(shè)定好的比對(duì)閾值時(shí),則認(rèn)為這些產(chǎn)品是相同的; 步驟C,將步驟B中已經(jīng)完成匹配的相同產(chǎn)品列表中的各線路產(chǎn)品鏈接放置在全量抓 取隊(duì)列中,采用爬蟲系統(tǒng)持續(xù)依次抓取全量隊(duì)列中各線路產(chǎn)品鏈接的價(jià)格信息,并計(jì)算各 個(gè)線路產(chǎn)品的更新周期;定時(shí)進(jìn)行周期性抓取,當(dāng)周期性抓取時(shí)間達(dá)到線路產(chǎn)品更新周期 的整數(shù)倍時(shí),則獲取這些線路產(chǎn)品鏈接中的價(jià)格信息并存入緩存中;當(dāng)用戶請(qǐng)求比價(jià)時(shí),判 斷緩存是否存在未過(guò)期的價(jià)格信息,當(dāng)存在未過(guò)期的價(jià)格信息時(shí)從緩存中獲得頁(yè)面產(chǎn)品列 表中各個(gè)產(chǎn)品對(duì)應(yīng)的價(jià)格,否則實(shí)時(shí)獲取價(jià)格數(shù)據(jù)。2. 根據(jù)權(quán)利要求1所述的線路類旅游產(chǎn)品的實(shí)時(shí)比價(jià)方法,其特征在于:所述步驟C 中進(jìn)行周期性抓取時(shí)將需要進(jìn)行抓取的線路產(chǎn)品鏈接放入周期隊(duì)列中。3. 根據(jù)權(quán)利要求2所述的線路類旅游產(chǎn)品的實(shí)時(shí)比價(jià)方法,其特征在于:所述周期隊(duì) 列為多個(gè),一個(gè)周期隊(duì)列用于放置同一更新周期的產(chǎn)品鏈接。4. 根據(jù)權(quán)利要求1~3中任意一項(xiàng)所述的線路類旅游產(chǎn)品的實(shí)時(shí)比價(jià)方法,其特征在 于:所述步驟C中進(jìn)行周期性抓取時(shí)計(jì)算各個(gè)線路產(chǎn)品的更新周期。5. 根據(jù)權(quán)利要求1所述的線路類旅游產(chǎn)品的實(shí)時(shí)比價(jià)方法,其特征在于,所述實(shí)時(shí)獲 取價(jià)格數(shù)據(jù)的過(guò)程包括以下過(guò)程:將需要實(shí)時(shí)獲取價(jià)格的線路產(chǎn)品鏈接發(fā)送到實(shí)時(shí)隊(duì)列 中,爬蟲系統(tǒng)從實(shí)時(shí)隊(duì)列中取得鏈接后去相應(yīng)網(wǎng)站抓取價(jià)格信息。6. 根據(jù)權(quán)利要求1或5所述的線路類旅游產(chǎn)品的實(shí)時(shí)比價(jià)方法,其特征在于:所述實(shí) 時(shí)獲取的價(jià)格數(shù)據(jù)存入緩存中。
【專利摘要】本發(fā)明公開(kāi)了一種線路類旅游產(chǎn)品的自動(dòng)實(shí)時(shí)比價(jià)方法,從線路行程信息,價(jià)格信息,團(tuán)期信息等多個(gè)維度對(duì)線路類旅游產(chǎn)品進(jìn)行相似度計(jì)算,獲得相似線路產(chǎn)品,并實(shí)時(shí)抓取最新價(jià)格,保證比價(jià)的準(zhǔn)確性和實(shí)時(shí)性。本發(fā)明包括獲取線路產(chǎn)品信息步驟,相似度計(jì)算步驟,實(shí)時(shí)獲取價(jià)格步驟。本發(fā)明針對(duì)線路類旅游產(chǎn)品從多種維度進(jìn)行相似性比對(duì),比對(duì)結(jié)果精確,能夠篩選出相似度極高的線路產(chǎn)品;且能夠根據(jù)各線路產(chǎn)品的更新周期差異,動(dòng)態(tài)調(diào)整抓取頻率,在保證實(shí)時(shí)抓取產(chǎn)品的最新價(jià)格進(jìn)行比價(jià)的基礎(chǔ)上充分節(jié)約服務(wù)器和網(wǎng)絡(luò)資源。
【IPC分類】G06Q50/14
【公開(kāi)號(hào)】CN105354770
【申請(qǐng)?zhí)枴緾N201510782725
【發(fā)明人】蘇永圳, 孟碩培, 史何富
【申請(qǐng)人】南京途牛科技有限公司
【公開(kāi)日】2016年2月24日
【申請(qǐng)日】2015年11月16日