孫握瑜





摘要: 在互聯網時代,各類新媒體平臺出現使得信息數據得到廣泛傳播。為加強對新浪微博內容的監管和分析,應對輿情分析的需求,該文主要研究采用Python語言設計新浪微博爬蟲程序,在對網絡爬蟲基本概念和原理研究的基礎上,設計了具有配置、爬取、存儲、分析這4個功能模塊的應用程序,為媒體內容監管和數據分析提供了技術支持。
關鍵詞: Python? 新浪微博網絡爬蟲輿情分析
中圖分類號:TP393.092;TP391.1? ?文獻標識碼:A? ?文章編號:1672-3791(2022)06(b)-0000-00
Design and Lmplementation of Sina Weibo Crawler Program Based on Python
SUN Woyu
(School of Information and Artificial Intelligence, Anhui Business College, Anhui Province,241000? China)
Abstract: In the era of information explosion, various new media platforms appear to make the information and data widely disseminated. In order to strengthen the management of sina Weibo information and meet the needs of public opinion analysis, this paper focuses on the design of sina Weibo crawler program in Python language. Based on the research on the basic concept and principle of web crawler, an application program with four functional modules of configuration, crawling, storage and analysis is designed, which provides technical support for media content management and data analysis.
Key Words: Python; Sina Weibo; Web crawler; Public opinion analysis
隨著互聯網技術的快速革新,新媒體平臺層見疊出,廣大網民可以通過互聯網平臺發表觀點和記錄日常生活,各類消息事件也得到了廣泛傳播,為我們帶來了信息爆炸的時代,拓寬了廣大人民群眾的視野,同時也帶來了一系列輿情風險。對社交網絡輿情的有效監管,是在新形勢下應對國家安全環境新變化、新發展的必然要求[1]。新浪微博自 2009 年正式投入使用以來,活躍用戶就一直保持著爆發式增長[2],2021年微博月活躍用戶達到5.3億,日活躍用戶達到2.3億,用戶年輕化趨勢明顯。盡管抖音、快手等短視頻類平臺不斷崛起,但是由于文字內容更新速度的優勢,新浪微博仍然是公共事件爆發的原點和信息傳播平臺。
在日常工作中,需要管理好本單位或組織的新浪微博資訊,像高校等組織管理賬號較多,人工監管顯然是跟不上信息更新速度的,這就需要利用軟件技術自動抓取和分析新浪微博信息。盡管一些第三方軟件提供了新浪微博部分數據訪問接口,使管理人員內容較為快捷地抓取一些信息,進行輿情分析。但是通過訪問接口抓取數據容易出現被限制情況,從而導致接口服務被禁用,而且數據還可能出現不精準的情況。該文主要參數使用Python技術設計開發新浪微博爬蟲程序,用于分析獲取指定微博用戶的輿情信息,為做好輿情分析提供基礎的數據來源。基于Python開發的網絡爬蟲云平臺具有開發周期短、應用便捷、技術維護方便等優點[3]。
1相關概念
1.1 Python
近年來,大數據、AI和物聯網等技術不斷興起和革新,Python已經成為當前流行的編程語言之一。Python從本質上來說屬于一種開源編程語言,其具有功能強大、語法簡便、適用性良好等優勢特性[4]。它是一種跨平臺的面向對象計算機程序設計語言,可以很方便地調用別的語言(如C++、Java)編寫的功能模塊,將它們有機結合在一起形成更高效的新程序。另外,Python有著豐富、強大的庫支持,比如:基于Python 的網絡爬蟲庫就非常完備,如表1所示。
1.2 網絡爬蟲概念和原理
爬蟲就是通過編寫程序模擬瀏覽器上網,按要求在網上抓取數據的程序[5],可以按照設定的規則自動獲取互聯網上的信息。網絡爬蟲根據不同的系統結構和運作原理分為四種類型,該文采集新浪微博的數據信息主要使用通用網絡爬蟲。除此之外還有深層、聚焦和增量式等三種類型網絡爬蟲,下面主要對通用網絡爬蟲的原理進行詳細介紹。
通用網絡爬蟲可以將互聯網上的Web頁批量爬取并下載的本地進行存儲,其實現過程如圖1所示。
首先根據需要,由用戶指定初始URL。然后根據URL保存對應的網頁內容到數據庫中,對其頁面中的內容進行解析,獲取頁面中一系列URL地址,把這些URL地址加載到URL隊列中。接下來對新獲取的URL地址不斷進行重復解析和存儲,直到滿足設置的停止條件,如沒有設置停止條件,爬蟲會不斷工作下去。另外在爬取網頁的過程中,會不斷將爬取過的網頁URL存儲到列表中,作為參照避免重復爬取。
2新浪微博爬蟲程序設計
2.1 爬蟲設計思路
首先配置一個或多個需要獲取的微博用戶,其中包括微博UID、微博名稱等,并配置其他相關屬性,用較為簡便的方法完成數據采集。由于新浪微博Web版頁面請求被JS加密過,因此抓取移動端頁面較為簡便一些。首先,在電腦上訪問移動端頁面,并同時保持用戶登錄狀態,才能訪問指定用戶的頁面。通過觀察發現頁面URL的規則是“https://m.weibo.cn/u/用戶編號”,通過提交該請求會返回格式如getIndex?type=uid&value=用戶編號&containerid=107603+用戶編號的JSON信息,如圖2所示。JSON是一種輕量級的數據交換格式,易于閱讀和編寫,也易于機器解析和生成[6]。JSON數據主要返回微博內容、發布時間、瀏覽數、點贊數、分頁數等內容,只要使用Python對JSON信息進行解析分析,獲取其中需要的內容,然后再根據分頁數逐個獲取每一頁的微博信息,最終完成抓取任務。
2.2 功能實現
按照網絡爬蟲的原理和爬蟲程序設計思路,程序共包括四大模塊。
2.2.1配置模塊
主要配置用戶UID、微博名稱、信息開始時間、存儲數據格式等信息,并把配置信息加載到對象中,可以是同時配置多個指定用戶微博。
2.2.2爬取模塊
通過配置對象初始化爬蟲信息,然后獲取微博頁數,然后根據頁碼數進行循環抓取每一頁的內容。在每頁信息抓取過程中,需要將JSON信息中的data節點中的cards節點內容加載到對象中,如果card_type=9,進一步讀取mblog節點中的內容,具體對應關系表2所示。在抓取的過程中為避免爬蟲速度過快被系統限制,通過加入隨機等待避免被限制,模擬人工操作的特征,每訪問一些頁面適當的隨機等待一段時間。在系統設計中,我們采用每爬取1~5頁隨機等待6~10 s,其中這個Sleep時間可以根據實際情況進行調整。通過實踐證明該方法可以基本上規避被系統限制的情況。
2.2.3存儲模塊
通過爬蟲程序的不斷抓取,在指定范圍內容的每頁微博信息均完成了采集工作,為了后期數據分析,需要進行存儲。對于海量數據存儲來說,需要用到Mangodb等數據,該文設計的爬蟲程序只針對于單個用戶的微博信息,內容較少,因此只采用csv格式進行數據存儲,通過Python創建csv文件,每爬取50頁信息寫入一次文件,存儲完成的文件如圖3所示。在記錄信息的通知還可以下載與微博信息對應的原始圖片。
2.2.4分析模塊
輿情分析主要根據網絡爬蟲獲取并存儲的網絡數據,在該文中使用 Python開發設計爬蟲程序,指定對“安徽商貿職業技術學院”的新浪微博數據進行抓取,然后對其發布內容、參與話題圈、@用戶情況和@話題圈情況進行了可視化分析,如圖4~圖6所示。通過可視化的分析,可以看出安徽商貿職業技術學院微博主要以發布氣象、固定時間問候為主,另外還發布詩集、要聞、通知等。參與話題圈眾多,主要以體育、娛樂、節氣、政治節日、重要事件等為主,多為正能量較強的話題。在發布內容時,主要@的用戶有人民日報、央視新聞、新浪視頻、新浪音樂等,和發布的話題類型也是相符的。另外最后還可以看出@的話題圈也與上述分析的結果是一致的。
3 結語
經過分析研究,采用Python 語言設計新浪微博爬蟲程序,在程序設計上語法簡便、功能強大,且具有較高的可行性。程序通過配置、抓取、存儲、分析四大模塊,抓取新浪微博指定用戶的內容,并進行數據分析。實驗結果表明:該爬蟲性能穩定良好,爬取內容全面無遺漏,可以對指定用戶的新浪微博信息進行抓取,并且對數據進行儲存,可視化分析能夠直觀地了解微博的運行狀態,實用性很強。
參考文獻
[1] 張柳. 社交網絡輿情用戶主題圖譜構建及輿情引導策略研究[D].長春:吉林大學,2021.
[2] 孟寶燦.Python網絡爬蟲應用探討[J].廣播電視信息,2022,29(3):108-110.
[3] 畢志杰,李靜.基于Python的新浪微博爬蟲程序設計與研究[J].信息與電腦:理論版,2020,32(4):150-152.
[4] 杜曉旭,賈小云.基于Python的新浪微博爬蟲分析[J].軟件,2019,40(4):182-185.
[5] 于學斗,柏曉鈺.基于Python的城市天氣數據爬蟲程序分析[J].辦公自動化,2022,27(7):10-13,9.
[6] 黃秀麗,陳志.基于JSON的異構Web平臺的設計與實現[J].計算機技術與發展,2021,31(3):120-125.