葉宇翔
摘要:通過基于Python語言的網(wǎng)絡爬蟲對“今日頭條”、“一點資訊”的熱點推送新聞標題進行抓取,使用基于Python的中文分詞工具對新聞標題數(shù)據(jù)進行分詞統(tǒng)計處理。為了高效獲取數(shù)據(jù),對不同的網(wǎng)站使用不同的爬蟲技術,在為期一個月的時間內(nèi)對“今日頭條”等自媒體新聞網(wǎng)抓取近萬條熱點新聞標題,在對數(shù)據(jù)進行分詞統(tǒng)計及關鍵詞提取后成功獲取當月新聞中的熱詞。
關鍵詞:網(wǎng)絡爬蟲;中文分詞;自媒體;新聞傳播;關鍵詞
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2018)17-0014-03
Abstract:Through the Python-based web crawler the Python-based Chinese word segmentation tool to capture the headline data of “www.toutiao.com” and “www.yidianzixun.com”. In order to efficiently obtain data, different spider technologies are used for different websites, and nearly 10,000 hot news headlines were crawled on the “www.toutiao.com” and other self-media news networks for a period of one month, and word segmentation statistics and keywords are used for the data. After the extraction, the hot words in the news of the current month were successfully obtained.
Key words: web crawler; Chinese word segmentation; media; news; keyword
在這個信息“大爆炸”的大數(shù)據(jù)時代,自媒體已成為網(wǎng)民最重要的閱讀渠道,通過自媒體進行內(nèi)容創(chuàng)業(yè)也是熱門創(chuàng)業(yè)方向,大量企業(yè)、事業(yè)單位也在自媒體平臺投入資源。自媒體文章的標題至關重要。面對每天海量的推送,標題是否討喜決定了網(wǎng)民會不會閱讀一篇文章;同樣,對于內(nèi)容創(chuàng)作者,引人注目的標題也是日常工作的重難點。
為了獲得當月新聞熱詞,將運用基于Python語言的“網(wǎng)絡爬蟲”和“中文切詞”兩種技術。網(wǎng)絡爬蟲是一種用來自動瀏覽萬維網(wǎng)的網(wǎng)絡機器人。面對不同的網(wǎng)站以及多種多樣的反爬蟲技術,需要使用針對性的方法對所需數(shù)據(jù)進行高效的抓取,如面對動態(tài)加載的網(wǎng)頁,使用模擬發(fā)送請求或使用Selenium模擬用戶操作的方法抓取數(shù)據(jù)。中文切詞是分析中文文本的必要步驟,只有應用良好的切詞算法,數(shù)據(jù)才能被統(tǒng)計工具處理。此次研究采用著名的基于Python的Jieba分詞工具。借助該技術,研究者在短時間內(nèi)獲得海量文章的有關數(shù)據(jù),在獲取數(shù)據(jù)之后,對其進行快速統(tǒng)計處理。
1 技術準備
1.1 數(shù)據(jù)源選取
“今日頭條”是一款基于數(shù)據(jù)挖掘的推薦引擎產(chǎn)品,它為用戶推薦新聞信息,提供連接人與信息的新型服務,是國內(nèi)移動互聯(lián)網(wǎng)領域成長最快的產(chǎn)品服務之一,據(jù)今日頭條官方——截止2016年8月,今日頭條累計激活用戶數(shù)已達5.3億,日活躍人數(shù)超過5500萬,月活躍人數(shù)超過1.3億,單用戶每日使用時長超過74分鐘?!耙稽c資訊”與“今日頭條”別無二致。
研究者選擇以“今日頭條”、“一點資訊”為主要抓取對象,是因為其為當今最為知名的自媒體之一,網(wǎng)站流量為其推送新聞的質(zhì)量提供保證,而其巨大的數(shù)據(jù)源和對于熱點推送的先進算法也可為研究提供大量現(xiàn)成數(shù)據(jù),新聞來源遍布各地,其新聞標題更能反映整個網(wǎng)絡自媒體的現(xiàn)狀。
1.2 網(wǎng)絡爬蟲技術
1.2.1 基于BeautifulSoup4的靜態(tài)網(wǎng)頁爬蟲
BeautifulSoup4是一個可以從HTML或XML文件中提取數(shù)據(jù)的Python庫.它能夠通過文檔導航,查找,修改文檔的方式獲取需要的數(shù)據(jù)。多用于結合selenium使用。
1.2.2 基于頁面請求的爬蟲技術
爬取數(shù)據(jù)時如碰到通過JavaScript動態(tài)加載的數(shù)據(jù)以及使用了Ajax技術的網(wǎng)站如“今日頭條”、“一點資訊”時,只有在不斷下拉網(wǎng)頁時才會加載新的內(nèi)容,靜態(tài)抓取技術的便不再可行。當用戶下拉頁面時,觸發(fā)一個js事件,向服務器發(fā)送上面的請求取數(shù)據(jù),然后通過一定的js邏輯把取到的這些json數(shù)據(jù)填充到HTML頁面當中。
針對此類網(wǎng)頁采用逆向分析法尋找網(wǎng)站API接口,通過模擬發(fā)送Ajax請求,接受JSON格式的返回數(shù)據(jù),通過json.loads方法將其轉換為dict類型,從中可以抽取關鍵信息,如新聞的標題、來源、發(fā)布時間等等。
逆向分析請求地址的特征是此技術的關鍵,若找到特征便可模擬發(fā)送數(shù)個請求以獲取大量數(shù)據(jù)。而每個網(wǎng)站的請求地址特征不同,部分網(wǎng)站如“今日頭條”對請求地址的特征值進行加密,難以模擬請求。此技術雖效率極高卻依然存在其局限性。
1.2.3 基于selenium的爬蟲技術
Selenium是一個基于Python的自動化測試工具。它支持各種瀏覽器,包括 Chrome,Safari,F(xiàn)irefox 等主流界面式瀏覽器。將Selenium與無頭瀏覽器——沒有界面的瀏覽器結合可以模擬用戶在瀏覽器進行的操作,可以模擬下拉網(wǎng)頁加載數(shù)據(jù),亦可模擬點擊,為爬蟲程序提供了巨大的拓展空間,亦可用于回避諸多網(wǎng)站的反爬蟲技術。此項技術具有極強的泛用性,而效率則不太理想。
1.3 分詞工具