999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

微博用戶信息采集分析系統設計與實現

2019-10-18 02:57:59張揚范巖夏玲玲
軟件導刊 2019年9期
關鍵詞:數據分析

張揚 范巖 夏玲玲

摘 要:系統運用Python語言克服新浪微博反爬蟲問題,使用Scrapy框架實現了高效、穩定的微博用戶信息爬蟲程序,全面獲取用戶在微博中的基本信息,并導入Neo4j圖數據庫和Echarts數據可視化庫進行人物關系分析和挖掘。此外,系統針對微博中存在大量“網絡水軍”的現狀設置了過濾選項,可以有效排除“網絡水軍”非正常行為對分析結果的影響。系統調試結果表明,系統能夠實現對特定微博下轉發、評論用戶信息的實時、穩定、高效采集與分析,有效幫助人們從海量數據中提取復雜的關聯關系,簡潔、直觀地分析微博用戶之間的交互關系。

關鍵詞:新浪微博;網絡爬蟲;模擬登錄;數據分析

DOI:10. 11907/rjdk. 191139 開放科學(資源服務)標識碼(OSID):

中圖分類號:TP319文獻標識碼:A 文章編號:1672-7800(2019)009-0125-05

Design and Implementation of Microblog User Information

Acquisition and Analysis System

ZHANG Yang, FAN Yan, XIA Ling-ling,CHEN Jun-an,WANG Qin

(Department of Computer Information and Cyber Security, Jiangsu Police Institute, Nanjing 210031, China)

Abstract: An efficient and stable crawler system based on Scrapy for microblog user information acquisition and analysis is designed. In the system, by overcoming anti-crawler problem of Sina Weibo, it can obtain all basic profile information of microblog users. The obtained user information can be imported into Neo4j graph database and Echarts visual diagram to analyze and mine the relationship between users. Additionally, according to the current situation of a large number of Internet paid posters existed in Microblog, the system provides a filtering option, which can effectively eliminate the influence of abnormal behavior of paid posters on the analysis results. The debugging results show that the system can crawl and analyze user information for specific microblog forwarding and commenting to achieve the real-time, stable and effective performance. It can effectively help people extract complex relationships from massive data and analyze the interaction between Microblog users concisely and intuitively.

Key Words: Sina Weibo; network crawler; simulation login; data analysis

0 引言

隨著自媒體時代的到來,社交網絡服務(Social Network Service,SNS)已融入大眾日常生活中。個人將自己的信息上傳到各種各樣的社會化媒體平臺如微博、論壇、博客、在線社區、即時通訊軟件(微信、QQ)、社交網站(Facebook、Twitter)等,通過社交平臺管理自己的社交圈,由此造成大量社交數據在互聯網上被公開。社交數據中匯聚了大量的用戶關系數據和信息傳播數據,有效提取出這些數據對于研究人類社會、經濟等的潛在規律以及探索人類社會關系中的奧秘至關重要。

新浪微博作為國內最具影響力的社交平臺之一,截至2018年12月,月活躍用戶數已達4.46億,蘊含著海量有價值的用戶信息及社交關系數據。羅咪[1]通過模擬登陸抓取動態網頁,設計了一個基于Python的新浪微博爬蟲系統獲取用戶數據;張章學[2]對社交網絡中的信息存儲進行分析,構建了用戶敏感數據獲取模型,在獲取用戶個人信息基礎上,利用好友列表獲取其整個社交平臺中用戶的敏感數據。以新浪微博為例,研究發現用戶所有敏感數據中,職業獲取率最低;Tumasjan A等[3]對Twitter上的10萬多條信息進行分析,發現Twitter上的情緒如與政客相關的積極和消極情緒,與選民的政治偏好密切相關;魏冬梅等[4]對Web信息獲取方法、原理和關鍵技術進行研究,提出一種基于Python和相關庫,結合模塊化方法構建Web文本信息獲取框架的策略。社交數據的獲取與關系數據的存儲和管理息息相關,張琳和熊斯攀[5]基于Neo4j圖形數據庫設計并實現了Linked-US社交網絡平臺,更好地管理和更新社交網絡數據及其內在關系;Fan YH[6]將Scrapy與Redis相結合對原始Scrapy框架進行改進,設計了一個基于Web信息Scrapy框架的分布式爬蟲系統。

本文以新浪微博為例,設計并實現一套基于Python的用戶信息采集系統,可以實現模擬登錄新浪微博,獲取參與熱點話題的微博用戶信息,并利用Neo4j圖形數據庫存儲及可視化展示用戶關系。

1 微博數據獲取方法

1.1 基于微博API的數據獲取

新浪微博提供的API接口可以使開發人員高效、便捷地獲取微博數據,用戶在新浪微博開放平臺注冊成為開發者,通過Oauth2.0用戶授權后即可在任意開發環境下根據具體需求獲取所需微博數據[7]。盡管新浪微博提供的API已經比較完善,但還存在一些不足。一方面出于對用戶隱私數據的保護,部分用戶信息暫未支持API接口;另一方面新浪公司對API的調用頻率進行了嚴格限制,致使數據采集速度欠佳,面對熱點話題中“吃瓜群眾”的爆發式增長,難以獲取大量實時數據。

因此,通過微博的API接口進行數據采集雖然高效、便捷,但難以滿足本系統對數據獲取的實時性要求。

1.2 基于Python網絡爬蟲的數據獲取

與新浪微博API相比,基于Python的網絡爬蟲利用程序模仿普通用戶使用瀏覽器訪問微博獲取實時數據。網絡爬蟲技術的優勢在于通過對網頁源代碼的解析,幾乎可以獲取所有網頁展示信息,而且基于Python的網絡爬蟲獲取數據沒有速度限制,在理想狀態下每小時可獲取上百萬條用戶信息[8-10]。

實現該項技術的難點在于新浪微博官方對微博爬蟲采取抵制態度,其反爬蟲機制一直在不斷完善,導致模擬登錄過程中障礙重重;此外,對網頁源代碼的分析和構造請求也并不簡單。本文將重點闡述系統設計與實現過程中如何應對反爬蟲機制。

2 系統設計

2.1 模擬登錄

模擬登錄是本系統要攻克的第一個難題。模擬登錄指讓計算機模仿人工操作,以達到欺騙服務器的目的。本系統結合以下3種方式修改請求頭以實現模擬登錄。

(1)隨機調用User-Agent。用戶代理(User-Agent,UA)是指包含瀏覽器信息、操作系統信息等的一個特殊字符串頭,服務器通過它判斷當前訪問對象是瀏覽器還是網絡爬蟲。系統中使用Python安裝fake-useragent庫,每次向該庫請求時都會獲得一個隨機的User-Agent,偽裝成不同瀏覽器,降低了被服務器辨認為網絡爬蟲的概率。

(2)建立并維護proxy代理池。當同一IP請求微博網頁次數過多將出現414狀態碼,因此考慮獲取代理網站提供的高速代理并建立代理池,每次請求隨機抽取一個可用代理,偽裝成不同地址,迷惑服務器。經篩選發現購買代理服務商提供的穩定、高可用優質IP價格昂貴,而部分代理服務商也提供免費的代理IP,但數量少且極易失效。針對免費代理極易失效的特點,本系統建立代理池,將剛獲取的代理IP設為100分,每次根據分數高低依次檢測代理IP,當檢測到不可用時扣1分,分數低至閾值時直接從數據庫移除,當檢測到可用即設為100分,如圖1所示。

本系統建立的代理池以免費IP為主,包括獲取模塊、儲存模塊、檢測模塊、接口模塊,分別負責抓取各大代理商提供的免費高匿代理,以集合的形式將代理存入Redis數據庫,定期檢測代理的可用性和提供對外服務的接口。

從代理池可擴展性及數據庫連接安全性考慮,代理池導入Flask輕量級Web應用框架,將數據庫中存儲的IP隨機映射到Web端口,程序使用requests.get()方法即可獲取IP,如圖2所示。

(3)建立并維護Cookie池。Cookie是指某些網站為了辨別用戶身份,進行Session跟蹤而儲存在用戶本地終端上的數據,一般在登錄賬號后即可使用瀏覽器自帶的調試工具查看。在沒有登錄或同一賬號訪問頻率過高的情況下,新浪微博極易出現403狀態碼。因此需要購買大量微博賬號構建Cookies池,每次請求時隨機獲取一個Cookie。Cookies池包括生成、儲存、檢測、接口4個模塊,雖然微博賬號不會失效但生成的Cookie有效期一般只有2~4天,因此要及時剔除失效的Cookie并重新登錄更新Cookie。

在獲取Cookie的過程中有一個難點,即購買的微博賬號安全等級較低使得每次登錄微博均要輸入驗證碼,不同接口驗證碼類型也不相同,包括短信驗證碼、圖形驗證碼、四宮格滑動驗證碼等。本系統最終選擇在https://passport.weibo.cn/signin/login站點登錄并識別把握較大的四宮格滑動驗證碼,如圖3所示。具體采用識別驗證碼的模板匹配方法破解微博登錄驗證碼。微博驗證碼宮格只有4個,驗證碼樣式最多4*3*2*1=24種。首先將24種驗證碼圖片保存下來并設為模版,然后將登錄微博時出現的驗證碼與模板進行匹配,當相似度超過閾值時就能得到為模版定義的拖動順序,然后應用自動化測試工具Selenium模擬用戶拖動操作即可。

2.2 數據抓取

為實現爬蟲穩定、高效的運行,數據抓取模塊使用當下最流行的Scrapy爬蟲框架,其具有異步、并發、可擴展等優勢,在單位時間內可達到較高的吞吐量[11-13]。本系統爬取的目標數據包括熱門微博下參與評論、轉發用戶的基本信息及評論內容,具體通過以下3個模塊實現。

(1)微博評論抓取。通過對新浪微博WAP站點的分析可知微博評論頁面的url很簡單[14]。如以“https://weibo.cn/comment/H4tkWk09n?page=2”為例,每條微博評論的url前半部分“https://weibo.cn/comment/”完全相同。url后半部分中“H4tkWk09n”是每條微博的唯一標識符,暫將其稱為wid。url中“page=2”指當前評論的頁數,每頁包含10條評論,評論越多,評論頁數越多。因此爬蟲運行前只需獲取微博的唯一標識符wid,構造出初始url如“https://weibo.cn/comment/H4tkWk09n?page=1”,每頁爬完后修改page=page+1即可遞歸爬取直至頁面中沒有評論內容[15]。

評論頁面的源代碼并不復雜,如圖4所示。每條評論的具體內容均在html的

標簽內,用xpath語法“selector.xpath(‘//div[@class=“c” and starts-with(@id,”C”)])”可以提取出
標簽中的所有內容,再依次分離出用戶id、用戶昵稱、評論內容、獲贊數、評論時間、評論內容。第一個標簽中的“/u/1946624694”,其10位阿拉伯數字是每位用戶的唯一標識符,可用正則表達式提取出來。該參數不僅要存儲,還需要傳入下一模塊構建用戶基本信息的url。

(2)微博轉發抓取。微博轉發抓取與微博評論抓取大致相同,頁面url結構也基本類似,如“https://weibo.cn/repost/H4tkWk09n?page=2”,表示wid 為H4tkWk09n的微博轉發的第二頁,構造url遞歸爬取時可模仿評論部分。

查看網頁源代碼也可發現,每條轉發的全部內容均在

標簽中,用xpath可分別提取出用戶昵稱、轉發內容、轉發時間及發布工具。很明顯,獲取的時間格式并不規范,研究發現微博有3種不同的時間表示方式,由此編寫時間規范化函數,如圖5所示,統一將時間設為年月日時分的格式,方便后期數據存儲與分析。

如圖6所示,文本兩次出現“//@”,其中“//@”指轉發微博。“板刷在笆籬的馬甲”轉發“老方有腔調”的微博,“老方有腔調”轉發“哈三五四青年二代”的微博,“哈三五四青年二代”前面沒有“//@”則表示轉發原微博。如果“哈三五四青年二代”是一層轉發,那么“板刷在笆籬的馬甲”即為原微博的三層轉發。由此可添加“轉發層級”屬性,用于后期分析熱點事件的傳播深度。

(3)用戶基本信息抓取。用戶基本信息包括微博數、關注數、粉絲數、昵稱、性別、地區、生日,少數用戶還自己完善了簡介、感情狀況、認證信息、性取向等信息。本系統對每種信息都進行爬取,能獲取到信息則存入數據庫,無則以“/”填充。

上述信息需在兩個頁面中獲取,如“https://weibo.cn/u/2672074571”中包括用戶的微博數、關注數及粉絲數,“https://weibo.cn/2672074571/info”中則包含用戶的其它基本信息,如昵稱、性別、地區、生日等。不同用戶基本信息頁面url中改變的僅為uid(如2672074571)這一參數。在微博評論抓取中獲得uid后即可導入構造url。兩個頁面源代碼分別如圖7和圖8所示,第一個頁面源代碼仍較規范可用xpath提取,而第二個頁面源碼中的信息會因不同用戶完善資料程度的不同有種類和數量上的差別,因此使用re正則表達式對每條信息分別匹配查找。

通過以上3個模塊最多可獲得一個用戶的21條信息,本系統將這些能夠獲取的數據全部加以儲存并根據需要提取不同數據進行相應分析。

2.3 數據存儲與分析

(1)Neo4j圖數據庫。Neo4j是一個高性能的NoSQL圖形數據庫,它將結構化數據存儲在網絡圖上而不是表中[16]。本系統將每個微博用戶抽象為節點,將評論或轉發關系抽象為兩個節點之間的連邊,利用Neo4j形象地展現出豐富的用戶關系,有效提升復雜關系數據查詢效率[17]。

(2)ECharts庫。ECharts是一個使用JavaScript實現的開源圖表庫,可以流暢地運行在PC和移動設備上,底層依賴輕量級的Canvas類庫 ZRender,提供直觀、生動、交互豐富、可高度個性化定制的數據可視化圖表[18-20]。根據不同需求,本系統可導入Pyecharts生成各種ECharts圖表形象地展示數據。

3 系統優化

3.1 圖形用戶界面

由于每次采集熱點微博下的用戶信息時都需獲取微博的唯一標識符wid,并手動填入config.py文件中,對本系統用戶特別是沒有開發經驗的使用者而言十分不方便。因此,系統基于Tkinter庫設計并實現了圖形用戶界面,如圖9所示。用戶只需在界面文本框中輸入微博url或感興趣的主題關鍵字,系統將輸入的內容存入臨時文件中,并經過預處理提取出wid傳遞給爬蟲進行爬取。

3.2 水軍識別

對爬取的熱點微博中的用戶數據進行分析發現,部分微博數據存在蹊蹺。如圖10所示,微博轉發量為點贊量的27倍且高達千萬,而多數微博呈現的規律為轉發數遠小于點贊數,如圖11所示。原因顯而易見,大多數人愿意給喜歡的微博隨手點個贊而不是花費更多的時間轉發到自己首頁。鑒于微博的轉發、點贊規則:一個賬號可以轉發某條微博無數次,卻只能點一次贊,可以認為圖10是大量用戶多次轉發同一條微博所致。查看可疑微博轉發內容證實了這一點,如圖12所示,多名疑似機器號的用戶轉發同一條微博時附帶無意義的內容。進入這些疑似機器用戶的主頁也可發現,其存在等級低、粉絲少、多次轉發相同微博、無原創微博等共性特征,由此可以判定這些具有類似共性特征的用戶為“網絡水軍”。

在某些特定數據分析需求下,大量“網絡水軍”嚴重影響了熱點微博下用戶信息的分析結果,亟需對爬取的用戶隊列進行優化,識別并移除“網絡水軍”。考慮到“網絡水軍”沒有社交圈,粉絲數幾乎為零,設置系統在爬取時識別粉絲數小于n(n可以根據數據分析需求進行相應的設置,本系統中設置n=3)的用戶并標記為“網絡水軍”,在用戶分析時可以選擇將這些“網絡水軍”過濾掉。

4 結語

新浪微博作為國內最有影響力的社交媒體平臺,為輿情分析、社會關系挖掘等提供了海量有價值的數據,如何獲取和分析這些數據尤為重要。為實時獲取并分析特定微博下轉發、評論用戶相關信息,本文設計了基于新浪微博的用戶信息采集分析系統。本系統克服微博反爬蟲機制,利用Scrapy框架全面、高效地獲取數據,爬取的信息實時傳入Neo4j圖數據庫并可根據需求生成Echarts圖表。實驗結果表明,本系統具有針對性強、穩定性高、數據采集速度快、分析結果直觀等優點,為用戶關系研究提供了新方法。

參考文獻:

[1] 羅咪. 基于Python的新浪微博用戶數據獲取技術[J]. 電子世界, 2018(5): 138-139.

[2] 張章學. 社交網絡敏感數據獲取方法研究[J]. 軟件導刊, 2018, 17(3): 56-58.

[3] TUMASJAN A,SPRENGER T O,SANDNER P G,et al. Election forecasts with twitter: how 140 characters reflect the political landscape[J]. Social Science Computer Review,2011,29(4): 402-418.

[4] 魏冬梅,何忠秀,唐建梅. 基于Python的Web信息獲取方法研究[J]. 軟件導刊, 2018, 17(1): 41-43.

[5] 張琳,熊斯攀. 基于Neo4j的社交網絡平臺設計與實現[J]. 情報探索, 2018(8):77-82.

[6] FAN Y H,Design and implementation of distributed crawler system based on scrapy[C]. ?Chongqing, Peoples R China: 2017 3rd International Conference on Environmental Science and Material Application (ESMA),2017:25-26.

[7] 徐嘉成. 基于k-means聚類和TF-IDF的新浪微博輿情分析[D]. 鞍山:遼寧科技大學, 2016.

[8] 李琳. 基于Python的網絡爬蟲系統的設計與實現[J]. 信息通信,2017(9): 26-27.

[9] 謝克武. 大數據環境下基于Python的網絡爬蟲技術[J]. 電子制作, 2017(9): 44-45.

[10] 陳智,梁娟,謝兵,等. 新浪微博數據爬取研究[J]. 物聯網技術, 2016(12): 60-63.

[11] 鄧萬宇,劉光達,董瑩瑩. 一種基于Scrapy-Redis的分布式微博數據采集方案[J]. 信息技術,2018(11): 59-62.

[12] 安子建. 基于Scrapy框架的網絡爬蟲實現與數據抓取分析[D]. 長春:吉林大學,2017.

[13] 樊海英. 基于Scrapy的分布式網絡爬蟲系統的設計與開發[D]. 北京:北京工業大學,2017.

[14] 賴敬之. 基于網絡爬蟲的新浪微博數據分析網站的建立[J]. 通訊世界,2018(2): 73-74.

[15] 雷程程,張岸,齊清文,等. 格網化的位置微博數據抓取與人群信息提取[J]. 測繪科學,2017,42(2): 125-129.

[16] 林啟勝,王磊,周喜,等. 基于圖數據庫的文獻檢索方法優化與實現[J]. 微電子學與計算機,2017,34(10):63-67.

[17] 王紅,張青青,蔡偉偉,等. 基于Neo4j的領域本體存儲方法研究[J]. 計算機應用研究,2017, 34(8): 2404-2407.

[18] 黃雅莉,鐘琪. 基于Ajax與Echarts的網頁動態數據加載[J]. 科技資訊,2018(23): 34-37.

[19] 王子毅,張春海. 基于ECharts的數據可視化分析組件設計實現[J]. 微型機與應用,2016,35(14):46-48,51.

[20] 趙海國. Ajax技術支持下的ECharts動態數據實時刷新技術的實現[J]. 電子技術,2018(3):25-27,57.

(責任編輯:孫 娟)

猜你喜歡
數據分析
電子物證檢驗的數據分析與信息應用研究
基于matlab曲線擬合的數據預測分析
商情(2016年40期)2016-11-28 11:28:07
分眾媒體趨勢下場景營銷的商業前景
商(2016年32期)2016-11-24 17:39:41
佛山某給水管線控制測量探討
科技資訊(2016年18期)2016-11-15 18:05:53
SPSS在環境地球化學中的應用
考試周刊(2016年84期)2016-11-11 23:57:34
大數據時代高校數據管理的思考
科技視界(2016年18期)2016-11-03 22:51:40
我校如何利用體育大課間活動解決男生引體向上這個薄弱環節
體育時空(2016年8期)2016-10-25 18:02:39
Excel電子表格在財務日常工作中的應用
淺析大數據時代背景下的市場營銷策略
新常態下集團公司內部審計工作研究
中國市場(2016年36期)2016-10-19 04:31:23
主站蜘蛛池模板: 中文字幕在线看视频一区二区三区| 国产制服丝袜无码视频| 日本高清在线看免费观看| 国产女人在线观看| 国产人妖视频一区在线观看| a级毛片免费看| 久草国产在线观看| 天堂在线视频精品| 亚洲国产精品一区二区第一页免| 美女一区二区在线观看| 久久亚洲国产最新网站| 亚洲午夜国产精品无卡| 中国特黄美女一级视频| 爱色欧美亚洲综合图区| 国产人免费人成免费视频| 高潮爽到爆的喷水女主播视频 | 国产福利小视频高清在线观看| 色婷婷天天综合在线| 国产永久免费视频m3u8| 国产不卡一级毛片视频| 国产精品露脸视频| 婷婷久久综合九色综合88| 国产精品极品美女自在线网站| 国产视频 第一页| 中文无码精品A∨在线观看不卡| 亚洲精品国产成人7777| 欧美一区中文字幕| 国产精品免费入口视频| 亚洲男人的天堂在线观看| 亚洲人成在线精品| 中国国产高清免费AV片| 亚洲欧美国产高清va在线播放| 日韩精品亚洲一区中文字幕| 在线看片国产| 波多野衣结在线精品二区| 播五月综合| 中文字幕亚洲第一| 亚洲国产精品一区二区高清无码久久| 亚洲精品中文字幕无乱码| 国产69囗曝护士吞精在线视频| 国产一二三区视频| 欧美亚洲一区二区三区在线| 欧美中日韩在线| 国产凹凸一区在线观看视频| 很黄的网站在线观看| 国产人前露出系列视频| 亚洲三级视频在线观看| 九九九精品成人免费视频7| 99热这里只有精品免费国产| 国产成人三级| 国产欧美日本在线观看| 日韩免费成人| 亚洲综合中文字幕国产精品欧美| 最新国产午夜精品视频成人| 国产精品xxx| 国产日韩欧美一区二区三区在线| 国外欧美一区另类中文字幕| 72种姿势欧美久久久大黄蕉| 免费毛片在线| 91免费国产在线观看尤物| 亚洲男人天堂网址| 久久免费视频6| 四虎免费视频网站| 国产美女无遮挡免费视频| 亚洲成人精品在线| 欧美成人一级| 亚洲无码日韩一区| 华人在线亚洲欧美精品| 午夜a视频| 国产精品私拍99pans大尺度| 国产精品无码作爱| 伊人久久婷婷五月综合97色| 青草视频网站在线观看| 九色视频最新网址| 国产一级毛片网站| 日本尹人综合香蕉在线观看| 园内精品自拍视频在线播放| 久久精品视频亚洲| 伊在人亚洲香蕉精品播放 | 亚洲Aⅴ无码专区在线观看q| 久久网综合| 国内精品一区二区在线观看|