• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

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

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

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

      1

      Python Scrapy簡(jiǎn)介

      1.1 Python Scrapy框架

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

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

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

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

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

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

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

      1.2 Scrapy 工作原理

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

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

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

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

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

      1.3 基于PythonScrapy爬蟲方法

      PythonScrapy爬蟲主流的方法有:

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

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

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

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

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

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

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

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

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

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

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

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

      2.2 新聞匯聚平臺(tái)各個(gè)模塊設(shè)計(jì)

      2.2.1 Web前端設(shè)計(jì)

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

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

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

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

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

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

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

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

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

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

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

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

      2.2.3 后臺(tái)系統(tǒng)設(shè)計(jì)

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

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

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

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

      3 結(jié)論

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

      參考文獻(xiàn)

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

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

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

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

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

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

      作者簡(jiǎn)介

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

      猜你喜歡
      大數(shù)據(jù)
      大數(shù)據(jù)環(huán)境下基于移動(dòng)客戶端的傳統(tǒng)媒體轉(zhuǎn)型思路
      广元市| 凭祥市| 锦屏县| 抚松县| 莱芜市| 芒康县| 凉城县| 丰都县| 霍州市| 顺义区| 正镶白旗| 泌阳县| 马尔康县| 华容县| 潞城市| 松滋市| 浮梁县| 布尔津县| 万安县| 宿州市| 开封县| 宜阳县| 武平县| 翁牛特旗| 长顺县| 台东市| 福安市| 万载县| 馆陶县| 正定县| 安阳市| 西昌市| 阿拉善右旗| 泉州市| 富裕县| 柯坪县| 遂平县| 平远县| 九寨沟县| 措勤县| 宁阳县|