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

?

基于PythonScrapy技術(shù)的新聞線索匯聚實現(xiàn)

2020-02-21 01:50施金龍
電子技術(shù)與軟件工程 2020年13期
關(guān)鍵詞:大數(shù)據(jù)

摘要:本文探討利用Py thon技術(shù)從HTML網(wǎng)頁信息中提取需要的、有價值的數(shù)據(jù)和鏈接。本文采用的Scrapy網(wǎng)絡(luò)爬蟲框架,從海量數(shù)據(jù)中獲取所需要的新聞線索匯聚給媒體編輯記者。

關(guān)鍵詞:Python; Scrapy框架;大數(shù)據(jù);新聞線索匯聚

在目前全媒體時代下,面對大量新涌現(xiàn)出來的媒介,全通過媒體數(shù)據(jù)采集、智能化數(shù)據(jù)分析提高新聞工作者的效率。大數(shù)據(jù)的集聚發(fā)展,用戶通過互聯(lián)網(wǎng)獲取信息已經(jīng)成為日常習慣。當移動端的快速發(fā)展,用戶可以隨時訪問互聯(lián)網(wǎng)獲取相關(guān)信息,多樣化的信息在網(wǎng)絡(luò)上獲取和生成,信息的拷貝轉(zhuǎn)發(fā)也在同時進行,使得數(shù)據(jù)量在成倍的不斷增長。這些數(shù)據(jù)量多并且冗余,要從這些數(shù)據(jù)中能夠快速精準的獲取相關(guān)的信息,同時能夠盡可能全的獲取相應(yīng)的新聞信息,將這些新聞匯聚是新聞工作者研究的重要前沿課題。基于Python的Scrapy框架開發(fā)的新聞匯聚系統(tǒng),能夠?qū)?shù)據(jù)快速進行全面的匯聚。系統(tǒng)根據(jù)指定的主網(wǎng)、數(shù)據(jù)類型等一些關(guān)鍵字,收集相應(yīng)的新聞數(shù)據(jù),然后將這些數(shù)據(jù)經(jīng)過預(yù)處理篩選和數(shù)據(jù)分類。實時快速的獲取新聞數(shù)據(jù)以及精準的數(shù)據(jù)內(nèi)容,能夠提高新聞工作者的工作效率。

1

Python Scrapy簡介

1.1 Python Scrapy框架

Scrapy是在Python語言基礎(chǔ)上實現(xiàn)的一套應(yīng)用框架,主要用途是爬取網(wǎng)站數(shù)據(jù)并且提取數(shù)據(jù),其用途非常廣泛。Scrapy是事件驅(qū)動的網(wǎng)絡(luò)框架,當前Scrapy使用非常廣泛,用于各行各業(yè),可以對網(wǎng)站的數(shù)據(jù)進行挖掘,并且能夠監(jiān)測數(shù)據(jù),整體框架大致分為以下:

(1)引擎:該功能主要是承擔控制系統(tǒng)中各個組件的數(shù)據(jù)流,監(jiān)測相應(yīng)的動作,從而觸發(fā)相應(yīng)的事件;

(2)調(diào)度器:該功能主要是接受上面引擎發(fā)來的請求,將這些請求放入在已有的隊列中里,當引擎再一次的請求觸發(fā)數(shù)據(jù)返回。這個隊列是自動對URL進行智能化排序,自動分配下次需抓取的網(wǎng)站,并且能夠剔除隊列中重復的網(wǎng)站;

(3)下載器:該功能主要是用于或網(wǎng)頁中的內(nèi)容,獲取完后將內(nèi)容傳遞給EGINE,該下載器是在異步模型上的,能夠處理并發(fā)的數(shù)據(jù)請求;

(4)爬蟲:該功能是代碼開發(fā)自定義的類,主要用于解析responses,同時能夠?qū)tems進行提取工作,還能發(fā)送新的請求;

(5)項目管道:該功能是在items提取后,對其進行數(shù)據(jù)處理,其工作主要有數(shù)據(jù)清理、數(shù)據(jù)驗證、持久化等等一系列操作,下載器的中間件存在于引擎和下載器的中間層,其目的是處理從EGINE傳到DOWLOADER的請求request處理,以及從DOWNLOADER傳到EGrNE的響應(yīng)response請求處理;

(6)爬蟲中間件:位于EGINE和SPIDERS之間,主要工作是處理SPIDERS的輸入(即responses)和輸出(即requests)。

1.2 Scrapy 工作原理

Scrapy中的數(shù)據(jù)流由引擎控制,其操作流程按如下進行:

(1)爬蟲主程序工作是將需要下載的頁面請求requests傳遞給引擎,當引擎獲取到該請求是,同時轉(zhuǎn)發(fā)給Scrapy調(diào)度器;

(2)調(diào)度的工作是進行優(yōu)先級排序以及去重處理,調(diào)度再從排序和優(yōu)化好的隊列中提取一個請求,再通過引擎?zhèn)鬟f到下載器;

(3)下載器下載頁面,將生成的響應(yīng)通過下載器中間件發(fā)送到引擎;

(4)爬蟲主程序執(zhí)行數(shù)據(jù)解析,程序的解析函數(shù)返回兩種類型的數(shù)據(jù),一種數(shù)據(jù)時是items,一種數(shù)據(jù)是鏈接,這些requests按上面步驟交給調(diào)度器;items交給數(shù)據(jù)管道;

1.3 基于PythonScrapy爬蟲方法

PythonScrapy爬蟲主流的方法有:

(1)構(gòu)建 IP代理池方法;爬蟲軟件需要極短的時間內(nèi)產(chǎn)生大量的訪問請求操作,當爬蟲的IP地址一直固定使用,很有可能會被某些網(wǎng)站禁用,這時使用IP代理方法解決被禁用問題。

(2)構(gòu)建cookies池方法:在實際應(yīng)用中有很多網(wǎng)站是需要登錄才能進行相應(yīng)的訪問操作,爬蟲軟件需要產(chǎn)生cookies信息并且訪問時能夠攜帶。為防止被認定為異常賬戶,需要對賬號進行隨機的處理,因為使用同一的cookies信息很有可能導致賬戶異常。所以爬蟲軟件需要構(gòu)建本地cookies池,在執(zhí)行爬蟲操作是,能夠隨機切換cookies信息。

(3)突破登陸限制方法:有些網(wǎng)站登陸更加復雜,不僅僅是簡單點的賬戶密碼,還會添加驗證碼操作才能執(zhí)行訪問網(wǎng)頁操作,主要步驟如下:第一步是分析其登陸頁面源碼,提取其xsrf值,因為登陸國產(chǎn)中需要用到這個值,同時還有驗證碼校驗,提取正確驗證碼才能進行下一步的訪問;第二步用PythonScrapy框架編寫爬蟲軟件,通過spiders文件中的parse方法,通過該方法提取頁面源碼里的xsrf值,再將xsrf值寫入代碼的post方法;第三步針對部分頁面的驗證碼,通過手動輸入或者圖像識別的方法。采用手動輸入方法,是事先獲取到驗證碼圖片,然后用PIL庫中的Image類里面的show方法函數(shù),提取網(wǎng)頁的圖片,通過人為手動輸入進去。采用圖像自動識別方法,是直接接入系統(tǒng)平臺使用圖像算法進行識別,系統(tǒng)自動輸入驗證碼;第四步得到網(wǎng)頁的cookies信息對其進行數(shù)據(jù)提取操作。

(4) Selenium處理動態(tài)網(wǎng)頁方法:隨著爬蟲軟件框架的不斷進步和發(fā)展,出現(xiàn)了一些網(wǎng)站頁面已經(jīng)開始采用動態(tài)頁面,必須對其頁面進行相應(yīng)的操作,通過動態(tài)得出數(shù)據(jù)。首先通過分析網(wǎng)頁發(fā)來的Ajax請求,利用爬蟲軟件直接請求其相應(yīng)的接口獲取有效數(shù)據(jù),這種分析方法比較復雜,還有比較簡單的方式是Selenium。

2 基于Scrapy架構(gòu)的新聞匯聚平臺設(shè)計

2.1 系統(tǒng)平臺整體架構(gòu)

系統(tǒng)平臺系統(tǒng)采用BlS架構(gòu),系統(tǒng)主要分為:前端、后端、數(shù)據(jù)庫。

如圖1所示,新聞平臺系統(tǒng)由新聞(信息)采集、數(shù)據(jù)存取、內(nèi)容展示和管理四大部分組成:

(1)新聞(信息)采集模塊負責抓取主流權(quán)威媒體新聞、本地職能部門權(quán)威發(fā)布信息、所轄縣、市政府權(quán)威發(fā)布信息和具有參考價值的其他相關(guān)網(wǎng)站信息。當抓取網(wǎng)頁數(shù)據(jù)時,需要從訪問到的HTML源碼中提取數(shù)據(jù)。

(2)數(shù)據(jù)庫負責存儲采集的素材、各網(wǎng)站爬蟲配置參數(shù)、單位組織結(jié)構(gòu)、用戶信息和系統(tǒng)必要的保護和備份等信息。

(3)內(nèi)容展示模塊由前端展示頁面和后臺管理組成,包括登錄頁面、管理頁面、展示頁面、錯誤提示頁面組成。

(4)管理使用Web應(yīng)用程序框架。新聞工作者用的WEB前端頁面可以輸入根據(jù)自定義的關(guān)鍵字來搜索信息,定制基于關(guān)鍵詞爬蟲的界面。用戶可以根據(jù)網(wǎng)絡(luò)新聞主題跟蹤功能的主題詞云推薦的主題詞,自行添加需要定制的主題及其關(guān)鍵詞。

2.2 新聞匯聚平臺各個模塊設(shè)計

2.2.1 Web前端設(shè)計

新聞匯聚平臺前端是在Bootstrap框架上拓展開發(fā)的,該Web使用html語言來編寫新聞匯聚網(wǎng)頁內(nèi)容,通過JavaScript腳本語言定義網(wǎng)頁行為函數(shù),新聞工作者可以在瀏覽器上執(zhí)行相應(yīng)的編輯操作,執(zhí)行后給瀏覽器,這時瀏覽器與后端服務(wù)器建立TCP連接,并且使用HTTP進行數(shù)據(jù)通信和交互,將新聞工作者在瀏覽器上執(zhí)行的操作和輸入提交內(nèi)容通過http傳送到后端服務(wù)器。新聞工作者無需關(guān)心數(shù)據(jù)時如何提交和獲取,只需簡單的輸入操作,并獲得頁面展示。

Web前端主要有用戶登錄、任務(wù)新建、任務(wù)管理、數(shù)據(jù)查詢組成

(1)用戶登錄功能:該功能是判別該用戶是否合法,對數(shù)據(jù)內(nèi)容起到保護作用,用戶需輸入正確的用戶名、密碼和驗證碼才能進行主功能的操作;

(2)任務(wù)新建功能;該功能是根據(jù)用戶操作新建相應(yīng)的子任務(wù),同時根據(jù)自動識別該任務(wù)的屬性歸類。新建所需爬取的相應(yīng)字段,包括該字段的名稱、字段XPath表達式以及字段正則表達式;

(3)任務(wù)管理:該功能是將所有任務(wù)進行歸類和統(tǒng)一處理,新聞工作可以對任務(wù)進行增查刪改等操作,也可以修改每個任務(wù)的屬性,還可修改任務(wù)間的關(guān)系;

(4)數(shù)據(jù)查詢功能:新聞工作者可以根據(jù)需求輸入相應(yīng)的關(guān)鍵字或者多個關(guān)鍵字,得到一系列相關(guān)的URL展示。

2.2.2 系統(tǒng)數(shù)據(jù)庫設(shè)計

在平臺應(yīng)用系統(tǒng)中,數(shù)據(jù)庫設(shè)計的好壞直接影響應(yīng)用軟件是運行效率,設(shè)計有效的數(shù)據(jù)庫表,能夠極大的幫助平臺應(yīng)用系統(tǒng)軟件的有效執(zhí)行,在滿足系統(tǒng)需求的基礎(chǔ)上設(shè)計高效的數(shù)據(jù)表。在本系統(tǒng)中,數(shù)據(jù)庫使用到的是MySql。本系統(tǒng)數(shù)據(jù)庫的表如下:

(1)用戶信息數(shù)據(jù)表:表的字段主要有用戶名、郵箱、手機號、改用戶的創(chuàng)建時間以及修改時間等等;

(2)任務(wù)信息數(shù)據(jù)表:表的字段主要有任務(wù)名、任務(wù)英文縮寫、任務(wù)的目標網(wǎng)址、關(guān)鍵字、任務(wù)的創(chuàng)建時間以及任務(wù)的更新時間,表中的網(wǎng)址關(guān)鍵字主要使用在任務(wù)在執(zhí)行時url的爬取篩選處理,爬取得到有用的url并且過濾了大量的無效url;

(3)字段數(shù)據(jù)表:表的字段主要有字段名、字段的英文縮寫、正則表達式項、XPath表達式項、字段的創(chuàng)建時間以及更新時間,XPath表達式字段主要用于定位網(wǎng)頁的數(shù)據(jù)位置,其中正則表達式是依據(jù)實際需求用于解析數(shù)據(jù);

(4)任務(wù)樹數(shù)據(jù)表:表的字段主要有節(jié)點名稱、父節(jié)點名稱、任務(wù)數(shù)的創(chuàng)建時間以及任務(wù)樹的更新時間,在這當中根節(jié)點即代表用戶名,其中剩余非葉子節(jié)點的父節(jié)點代表任務(wù)類型,這里的葉子節(jié)點就是實際單采集任務(wù)。

2.2.3 后臺系統(tǒng)設(shè)計

本子系統(tǒng)在開發(fā)過程中使用了基于Python的Request庫以及l(fā)xml庫,其中Re quest庫是用于系統(tǒng)和所需Web站點的HTTP協(xié)議通信,所用的lxml庫對網(wǎng)頁內(nèi)容進行解析,最核心的是采用Python Scrapy爬蟲框架。

本系統(tǒng)主要功能分為兩個部分網(wǎng)頁解析和數(shù)據(jù)處理:

(1)網(wǎng)頁解析設(shè)計:Scrapy提取數(shù)據(jù)內(nèi)部有一套框架運行,即選擇器,選擇器使用所需的正則表達式或者Xpath匹配HTML文件中的相應(yīng)內(nèi)容。其中所使用的XPath和正則表達式是通過任務(wù)新建的子系統(tǒng)中設(shè)置;其中Scrapy的所有數(shù)據(jù)處理環(huán)節(jié)交給Scrapy的引擎進行控制處理;

(2)數(shù)據(jù)處理設(shè)計:每次完成任務(wù)后,數(shù)據(jù)處理將得到的數(shù)據(jù)進行初步的篩選和剔除,同時把數(shù)據(jù)與任務(wù)種類進行關(guān)聯(lián)處理,以便后續(xù)數(shù)據(jù)查詢操作。

3 結(jié)論

大數(shù)據(jù)快速發(fā)展的環(huán)境下,針對新聞匯聚領(lǐng)域相關(guān)的網(wǎng)絡(luò)應(yīng)用需求,提出了基于PythonScrapy的網(wǎng)絡(luò)新聞數(shù)據(jù)匯聚實現(xiàn),并將大數(shù)據(jù)的優(yōu)勢進行充分的利益,有效應(yīng)對互聯(lián)網(wǎng)競爭的大潮。本系統(tǒng)實現(xiàn)了通過關(guān)鍵字或者組合關(guān)鍵字,實時、聚集的獲取相關(guān)新聞數(shù)據(jù),在建設(shè)過程中,解決對新聞線索的匯聚和聚類方案,以及如何推廣也是至關(guān)重要的。

參考文獻

[1]左衛(wèi)剛,基于Python的新聞聚合系統(tǒng)網(wǎng)絡(luò)爬蟲研究[J].長春師范大學學報,2018,37 (12):29-33.

[2]王婷婷.新聞大數(shù)據(jù)的應(yīng)用與展望[J].廣播電視信息,201 8,315:25-26.

[3]張維楚.互聯(lián)網(wǎng)熱點搜索與追蹤的研究和實現(xiàn)[J].廣播與電視技術(shù)2015,42 (z1):2 7-29.

[4]楊君.基于Scrapy技術(shù)的數(shù)據(jù)采集系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機技術(shù)與發(fā)展201 8,28 (10):177-181.

[5]白劍飛,基于層次主題模型的網(wǎng)絡(luò)新聞匯聚[c].浙江大學,201 5.

[6]雷鑫.網(wǎng)絡(luò)輿情引導平臺系統(tǒng)及其關(guān)鍵技術(shù)的研究與實現(xiàn)[c].電子科技大學,2016.

作者簡介

施金龍(1972-),男,大學本科學歷。高級工程師。研究方向為廣播電視采編系統(tǒng)網(wǎng)絡(luò)數(shù)據(jù)應(yīng)用和媒體融合平臺建設(shè)運營。

猜你喜歡
大數(shù)據(jù)
大數(shù)據(jù)環(huán)境下基于移動客戶端的傳統(tǒng)媒體轉(zhuǎn)型思路