国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Flask框架的社交網(wǎng)站數(shù)據(jù)爬取及分析

2022-04-20 11:14余曉帆朱麗青
微型電腦應(yīng)用 2022年3期
關(guān)鍵詞:趨勢曲線節(jié)點

余曉帆, 朱麗青

(杭州網(wǎng)易云音樂科技有限公司,浙江,杭州 310052)

0 引言

隨著互聯(lián)網(wǎng)的飛速發(fā)展,人們在網(wǎng)上尋找信息的渠道越來越多[1-2]?;ヂ?lián)網(wǎng)用戶只能從少數(shù)門戶網(wǎng)站獲取知識和信息的時代已經(jīng)一去不復返了。更專業(yè)、更詳細的信息來源逐漸形成。與以往的網(wǎng)站相比,新的信息渠道主要有2個突出特點。一個特點是流動性和碎片化[3-4]。幾年前,互聯(lián)網(wǎng)用戶只能通過一臺通過電纜連接到互聯(lián)網(wǎng)的個人電腦來獲取信息。如今的互聯(lián)網(wǎng)用戶只要擁有一部帶有數(shù)據(jù)服務(wù)的普通手機,就可以隨時隨地獲取豐富的信息。另一個特點是用戶參與度增加[5-6]。過去,互聯(lián)網(wǎng)用戶只能被動地接收門戶網(wǎng)站提供的信息和服務(wù),很少有機會產(chǎn)生或傳播信息。但是現(xiàn)在,越來越多的用戶生成內(nèi)容(User Generated Content,UGC)服務(wù)被越來越頻繁地使用[7-11]。其中,社交平臺Facebook和Twitter是典型的由用戶創(chuàng)建所有信息的平臺。例如,視頻網(wǎng)站AcFun和BiliBili上的所有視頻和彈出字幕都是由用戶生成和上傳的。

在這些平臺中,社交問答平臺發(fā)展尤其迅速[12]。社交問答平臺是指用戶可以以特定格式發(fā)布特定主題問題的平臺。社交問答平臺允許所有用戶通過瀏覽平臺、回答問題、發(fā)表評論、投票贊成或反對答案等方式參與在線討論。同時,大多數(shù)用戶認同的答案也將在平臺中凸顯出來。在社交問答社區(qū),如知乎,每分鐘都會有很多熱門話題和新聞被討論,甚至被創(chuàng)造出來。近年來,許多新聞輿論的發(fā)源地也不再是傳統(tǒng)媒體,而是社會問答社區(qū)。究其原因,是新聞和意見雖然粗糙但真實,沒有經(jīng)過新聞人的加工和潤色。此外,用戶可以表達自己的真實想法,不必擔心自己的話是否會被曲解或修改。

因此,有必要對社會問答社區(qū)的數(shù)據(jù)進行采集和分析。本文的主要創(chuàng)新點如下。

(1)選擇一個適合本研究的問答平臺,并且能夠擴展到其他類似平臺。分析該平臺數(shù)據(jù)采集的難點,提出實現(xiàn)數(shù)據(jù)采集系統(tǒng)的解決方案。系統(tǒng)包括用戶信息存儲模塊、高度匿名、高可用的代理維護模塊、節(jié)點采集解析模塊和數(shù)據(jù)存儲模塊,在不受平臺限制的情況下快速采集數(shù)據(jù)并格式化存儲數(shù)據(jù)。

(2)設(shè)計并實現(xiàn)熱度分析與分級模塊?;贓charts項目,設(shè)計歷史熱度顯示模塊和實時熱度顯示模塊,實現(xiàn)歷史熱度和趨勢熱度的實時顯示。

(3)利用提出的數(shù)據(jù)爬行模塊和熱度分析顯示系統(tǒng),對31 520個規(guī)范化獨立主題的數(shù)據(jù)和979 815個問題的實時數(shù)據(jù)進行爬行。在此基礎(chǔ)上,展示該平臺的歷史和實時熱度分析。實驗結(jié)果表明,該系統(tǒng)完全達到了設(shè)計目標。

(4)對所提出的數(shù)據(jù)采集系統(tǒng)和熱度分析顯示系統(tǒng)進行分析和總結(jié),為今后的研究提供了參考和方向。

1 設(shè)計和部署

1.1 系統(tǒng)架構(gòu)

圖1顯示了系統(tǒng)的總體結(jié)構(gòu),包括代理采集模塊、數(shù)據(jù)爬蟲模塊(由節(jié)點采集子模塊、歷史最熱門問答采集子模塊和最新問答采集子模塊組成)、數(shù)據(jù)存儲模塊、熱度解析模塊和熱度顯示模塊。數(shù)據(jù)爬蟲模塊和熱度話題顯示模塊是系統(tǒng)的關(guān)鍵模塊,其他模塊的設(shè)計支持其運行。

圖1 系統(tǒng)架構(gòu)

1.2 代理模塊

一些設(shè)計糟糕的數(shù)據(jù)爬取程序只追求高效率,而不考慮錯誤[13]。因此,它們可能會對目標網(wǎng)站造成巨大的資源消耗,如消耗過多的帶寬、浪費服務(wù)器資源、泄露自己的數(shù)據(jù)等。為了打擊數(shù)據(jù)采集程序的濫用,許多站點可能會限制每個IP的訪問速度或次數(shù)。在這種情況下,數(shù)據(jù)爬蟲程序?qū)和R恍《螘r間,然后繼續(xù)爬取數(shù)據(jù)。當IP的次數(shù)或頻率受到限制時,數(shù)據(jù)爬取程序需要確保每個IP的頁面瀏覽量或頻率低于網(wǎng)站允許的閾值。一個可行的解決方案是依次通過代理IP訪問目標網(wǎng)站。因此,許多數(shù)據(jù)爬取程序需要建立和維護一個有效的代理IP池。

圖2顯示了本文使用的代理模塊的結(jié)構(gòu),包括IP獲取模塊、IP驗證模塊、IP持久化模塊和API模塊。

圖2 代理模塊示意圖

IP獲取模塊通過解析提供代理IP服務(wù)的目標網(wǎng)站的不同代理IP格式和頁面格式,從5個代理源獲取IP信息。

將在數(shù)據(jù)爬網(wǎng)兩步后驗證代理IP。首先,在數(shù)據(jù)爬行過程中,測試IP是否可用,以及它們的訪問速度是否能滿足我們的要求。

為了將它們與數(shù)據(jù)爬行模塊集成,使用這些良好的IP作為快速數(shù)據(jù)爬行的API。本文使用Flask框架來創(chuàng)建代理服務(wù)。

1.3 Flask框架

Flask是用Python語言基于Werkzeug工具箱編寫的一個輕量級Web開發(fā)的框架[14-15]。由于Flask本身就是相當于一個內(nèi)核,其結(jié)構(gòu)并不含有數(shù)據(jù)庫抽象層以及表單特征,所以Flask體積很小。但是Flask具有非常強大的擴展性,用戶可以自由選擇和組合需要的功能。這也使得Flask變得靈活多變。這些特性讓Flask框架一經(jīng)推出就受到廣大用戶的喜愛。

Flask的工作流程如圖3所示,在Flask中每一個URL代表一個是視圖函數(shù)。當用戶訪問這些URL時,系統(tǒng)就會調(diào)用相對應(yīng)視圖函數(shù),并將函數(shù)結(jié)果返回給用戶。

圖3 Flask的工作流程

2 數(shù)據(jù)采集與分析

2.1 數(shù)據(jù)集獲取

數(shù)據(jù)爬行的總體效率往往會因過于耗時的數(shù)據(jù)采集(網(wǎng)絡(luò)延遲、服務(wù)器效率低下、服務(wù)器錯誤、網(wǎng)絡(luò)中斷等)而降低。因此,需要同時打開多個線程進行數(shù)據(jù)采集。在編程時,設(shè)計了多線程異步從網(wǎng)站獲取信息的程序,大大提高了信息獲取的效率。

網(wǎng)頁信息獲取后需要進行解析。本文利用Beautiful Soup對采集到的信息進行解析。編譯解析模塊時,需要特別注意以下幾個方面。

控制范圍:為了避免被蜜罐檢測到,只從指定的DOM獲取數(shù)據(jù)。

一致性:考慮到解析到存儲過程中可能出現(xiàn)的錯誤,每個解析的存儲過程都是原子性的,這樣,如果出現(xiàn)任何問題,就不會在數(shù)據(jù)庫中重復存儲數(shù)據(jù)。

2.2 熱度分析

在對所有數(shù)據(jù)進行采集、解析和存儲后,本文實現(xiàn)了熱度分析模塊,對目標網(wǎng)站的歷史熱度和趨勢熱度進行分析。

從訂閱人氣、訂閱活動、訂閱差異等3個維度對歷史熱度進行分析。

三維算法用如下式:

(1)

式(1)表示訂閱普及度。它描述節(jié)點的普及程度,與訂閱數(shù)量正相關(guān)。訂閱受歡迎度最高的節(jié)點用作標準化所有其他節(jié)點的訂閱受歡迎度的比例。

(2)

式(2)表示訂閱活動。它的意思是以訂閱數(shù)量為單位生成的節(jié)點的活動程度,與最高的點贊平均數(shù)(即該節(jié)點下獲取的答案的點贊平均數(shù))正相關(guān)。訂閱活動最高的節(jié)點用作標準化所有其他節(jié)點的訂閱活動的比例。

(3)

式(3)是訂閱區(qū)分。它指節(jié)點關(guān)系中顯示的節(jié)點區(qū)分程度,與節(jié)點訂閱數(shù)正相關(guān),但與其父節(jié)點和子節(jié)點的平均節(jié)點訂閱數(shù)負相關(guān)。使用訂閱差異最大的節(jié)點作為標準化所有其他節(jié)點的訂閱差異的比例。

hisheat(n)=Kspsubpopular(n)+

Ksasubactive(n)+Ksdsubdist(n)

(4)

式(4)是歷史熱度算法,即訂閱人氣、訂閱活動和訂閱差異的加權(quán)平均值。

從趨勢活動和趨勢區(qū)分2個維度對趨勢熱進行分析。

(5)

式(5)表示趨勢活動。它指節(jié)點此時的活動,與節(jié)點訂閱數(shù)和此時討論節(jié)點的平均間隔呈負相關(guān)。使用趨勢活動最高的節(jié)點作為標準化所有其他節(jié)點的趨勢活動的尺度。

(6)

式(6)表示趨勢差異。它指節(jié)點在這一時刻的差異,它與討論其父節(jié)點和子節(jié)點的平均間隔正相關(guān),但與討論節(jié)點的平均間隔負相關(guān)。使用趨勢差異最大的節(jié)點作為標準化所有其他節(jié)點趨勢差異的尺度。

歷史熱度與節(jié)點的趨勢熱度呈負相關(guān),

treheat(n)=Ktatreactive(n)+Ktdtredist(n)

(7)

式(7)給出趨勢熱度算法,即趨勢活動和趨勢區(qū)分的加權(quán)平均值,去掉歷史熱。

具體熱度分析算法如下。

算法:熱度分析算法

輸入:采集到的數(shù)據(jù)

輸出:熱度

1.利用式(1)計算訂閱數(shù)量,得到訂閱普及度

2.利用式(2)通過點贊數(shù)計算訂閱活動

3.利用式(3)結(jié)合訂閱數(shù)計算訂閱區(qū)分

4.通過式(4)計算訂閱普及,訂閱活動,訂閱區(qū)分三者的加權(quán)平均值的和,得到歷史熱度

5.利用式(5)計算趨勢活動

6.利用式(6)計算趨勢差異

7.通過歷史熱度與節(jié)點趨勢熱度利用式(7)計算得到趨勢熱度

整個程序框圖如圖4所示。

圖4 程序框圖

3 實驗與評估

3.1 實驗環(huán)境

整個實驗環(huán)境部署在一臺臺式電腦上,該電腦配置為Windows 10、64位操作系統(tǒng)、英特爾I7 2.7 GHz處理器,32 GB內(nèi)存。整個實驗用Python 3.0語言實現(xiàn),實驗設(shè)計過程中主要使用了百度開源純JavaScript的圖表庫項目Echarts。

3.2 節(jié)點數(shù)據(jù)

共對31 520個正則化節(jié)點信息進行了數(shù)據(jù)爬取,共有613 332 546個訂閱,每個節(jié)點平均有19 458個訂閱。在這些節(jié)點中,排名前十的分別是“電影”“心理學”“美食”“設(shè)計”“自然科學”“商業(yè)”“健身”“經(jīng)濟”“旅游”“時尚”。前十大節(jié)點的總訂閱量超過500萬,訂閱量最大的節(jié)點關(guān)注度超過1 000萬,可見目的地網(wǎng)站用戶數(shù)量眾多,超過千萬。

3.3 熱度回答

獲得了目的地網(wǎng)站的384 884條答案信息,共被青睞713 932 419次,每個答案的平均得寵次數(shù)為n,其中得寵次數(shù)最多的前十名分別分布在“美食”“文學藝術(shù)”“生活”“性健康”“組織”“制度”“文藝”“失蹤”“生命”“交流”(因為答案可能包含多個節(jié)點,所以這里只顯示其中一個節(jié)點)。

3.4 討論時間間隔信息

以平均2 963 021 s的討論時間間隔獲得目的地站點上473 117個討論時間間隔信息(即節(jié)點最新消息發(fā)布時刻與數(shù)據(jù)獲取時間的間隔),其中討論最活躍的前十個節(jié)點分別為“生命”“文化”“實體”“社會”“東亞”“學科”“人”“中國”“亞洲”“大學”。

3.5 歷史話題

圖5顯示了歷史熱度話題的結(jié)果,其中有4條曲線,分別是訂閱熱門度曲線、訂閱活動熱門度曲線、訂閱區(qū)分度曲線和最終歷史熱度話題熱門度曲線,以10個歷史熱度為橫軸(按歷史熱度的倒序排列),分數(shù)為縱軸。從圖5可以看出:日常行為、生活以及求職類的4條曲線波動范圍較大,其中最大的是日常行為類話題;心理學類話題的曲線波動較??;其他熱度話題的曲線變化都較為相似。

圖5 歷史熱度話題

3.6 趨勢分析

圖6顯示了即時熱門話題的結(jié)果,其中有3條曲線,分別是活動趨勢曲線、區(qū)分趨勢曲線和最終趨勢熱門話題曲線。從圖中可以知道,年度庫存的將會成為人們最終關(guān)注的熱度。對于2019年的話題,由于是新增話題所以是沒有區(qū)分趨勢和活動趨勢的。

圖6 即時熱門話題

4 總結(jié)

隨著互聯(lián)網(wǎng)的不斷發(fā)展,社交問答平臺已經(jīng)成為一個新的具有吸引力的平臺,用戶可以在這個平臺上討論各種主題,也可以相繼創(chuàng)造熱門話題甚至新聞,以熱度分析為維度,對目標社交問答平臺進行數(shù)據(jù)采集和熱度分析。采用多種設(shè)置和策略保證數(shù)據(jù)爬行的穩(wěn)定運行,提出了用于社會問答平臺熱度分析的不同調(diào)查維度和多個調(diào)查指標。本文共獲得目的地31 520個規(guī)范化節(jié)點信息和847 205個相關(guān)問題,并對其歷史熱度和趨勢熱度進行了分析。分析結(jié)果表明,調(diào)查維度和指標能夠較好地反映目的地的熱度狀態(tài)。

在本文工作的基礎(chǔ)上,還值得開展以下工作。

雖然經(jīng)過多次處理和改進,但本文的爬行率仍然達不到理想的效果,一次完成所有數(shù)據(jù)的爬行需要很長的時間。由于數(shù)據(jù)爬行有時間跨度,記錄信息的時間不盡相同,與實時數(shù)據(jù)相比會產(chǎn)生一些錯誤。最理想的目標是進行實時分析??尚械慕鉀Q方案包括:尋找新的數(shù)據(jù)接口,提高數(shù)據(jù)訪問速度;目的地開放的API,可以實時獲取一些開放數(shù)據(jù)的結(jié)果等。

作為社交問答平臺的內(nèi)容創(chuàng)造者,用戶對熱度的產(chǎn)生和傳播有著巨大的影響。由于目的地站點策略不允許獲取此維度,因此本文不進行相關(guān)用戶數(shù)據(jù)的爬行和分析,如果未來相關(guān)策略發(fā)生變化,則可以在此維度進行探索。

猜你喜歡
趨勢曲線節(jié)點
家電行業(yè)不能太悲觀 從618看未來的兩種趨勢
未來訪談:出版的第二增長曲線在哪里?
基于圖連通支配集的子圖匹配優(yōu)化算法
趨勢
幸福曲線
結(jié)合概率路由的機會網(wǎng)絡(luò)自私節(jié)點檢測算法
面向復雜網(wǎng)絡(luò)的節(jié)點相似性度量*
采用貪婪啟發(fā)式的異構(gòu)WSNs 部分覆蓋算法*
初秋唇妝趨勢
2018春季彩妝流行趨勢