基于PythonScrapy技術(shù)的新聞線索匯聚實現(xiàn)_第1頁
基于PythonScrapy技術(shù)的新聞線索匯聚實現(xiàn)_第2頁
基于PythonScrapy技術(shù)的新聞線索匯聚實現(xiàn)_第3頁
基于PythonScrapy技術(shù)的新聞線索匯聚實現(xiàn)_第4頁
基于PythonScrapy技術(shù)的新聞線索匯聚實現(xiàn)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

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

摘要:本文探討利用Python技術(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)成為日常習(xí)慣。當(dāng)移動端的快速發(fā)展,用戶可以隨時訪問互聯(lián)網(wǎng)獲取相關(guān)信息,多樣化的信息在網(wǎng)絡(luò)上獲取和生成,信息的拷貝轉(zhuǎn)發(fā)也在同時進(jìn)行,使得數(shù)據(jù)量在成倍的不斷增長。這些數(shù)據(jù)量多并且冗余,要從這些數(shù)據(jù)中能夠快速精準(zhǔn)的獲取相關(guān)的信息,同時能夠盡可能全的獲取相應(yīng)的新聞信息,將這些新聞匯聚是新聞工作者研究的重要前沿課題。基于Python的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ù)據(jù)以及精準(zhǔn)的數(shù)據(jù)內(nèi)容,能夠提高新聞工作者的工作效率。1PythonScrapy簡介1.1PythonScrapy框架Scrapy是在Python語言基礎(chǔ)上實現(xiàn)的一套應(yīng)用框架,主要用途是爬取網(wǎng)站數(shù)據(jù)并且提取數(shù)據(jù),其用途非常廣泛。Scrapy是事件驅(qū)動的網(wǎng)絡(luò)框架,當(dāng)前Scrapy使用非常廣泛,用于各行各業(yè),可以對網(wǎng)站的數(shù)據(jù)進(jìn)行挖掘,并且能夠監(jiān)測數(shù)據(jù),整體框架大致分為以下:(1)引擎:該功能主要是承擔(dān)控制系統(tǒng)中各個組件的數(shù)據(jù)流,監(jiān)測相應(yīng)的動作,從而觸發(fā)相應(yīng)的事件;(2)調(diào)度器:該功能主要是接受上面引擎發(fā)來的請求,將這些請求放入在已有的隊列中里,當(dāng)引擎再一次的請求觸發(fā)數(shù)據(jù)返回。這個隊列是自動對URL進(jìn)行智能化排序,自動分配下次需抓取的網(wǎng)站,并且能夠剔除隊列中重復(fù)的網(wǎng)站;(3)下載器:該功能主要是用于或網(wǎng)頁中的內(nèi)容,獲取完后將內(nèi)容傳遞給EGINE,該下載器是在異步模型上的,能夠處理并發(fā)的數(shù)據(jù)請求;(4)爬蟲:該功能是代碼開發(fā)自定義的類,主要用于解析responses,同時能夠?qū)tems進(jìn)行提取工作,還能發(fā)送新的請求;(5)項目管道:該功能是在items提取后,對其進(jìn)行數(shù)據(jù)處理,其工作主要有數(shù)據(jù)清理、數(shù)據(jù)驗證、持久化等等一系列操作,下載器的中間件存在于引擎和下載器的中間層,其目的是處理從EGINE傳到DOWLOADER的請求request處理,以及從DOWNLOADER傳到EGrNE的響應(yīng)response請求處理;(6)爬蟲中間件:位于EGINE和SPIDERS之間,主要工作是處理SPIDERS的輸入(即responses)和輸出(即requests)。1.2Scrapy工作原理Scrapy中的數(shù)據(jù)流由引擎控制,其操作流程按如下進(jìn)行:(1)爬蟲主程序工作是將需要下載的頁面請求requests傳遞給引擎,當(dāng)引擎獲取到該請求是,同時轉(zhuǎn)發(fā)給Scrapy調(diào)度器;(2)調(diào)度的工作是進(jìn)行優(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)生大量的訪問請求操作,當(dāng)爬蟲的IP地址一直固定使用,很有可能會被某些網(wǎng)站禁用,這時使用IP代理方法解決被禁用問題。(2)構(gòu)建cookies池方法:在實際應(yīng)用中有很多網(wǎng)站是需要登錄才能進(jìn)行相應(yīng)的訪問操作,爬蟲軟件需要產(chǎn)生cookies信息并且訪問時能夠攜帶。為防止被認(rèn)定為異常賬戶,需要對賬號進(jìn)行隨機(jī)的處理,因為使用同一的cookies信息很有可能導(dǎo)致賬戶異常。所以爬蟲軟件需要構(gòu)建本地cookies池,在執(zhí)行爬蟲操作是,能夠隨機(jī)切換cookies信息。(3)突破登陸限制方法:有些網(wǎng)站登陸更加復(fù)雜,不僅僅是簡單點的賬戶密碼,還會添加驗證碼操作才能執(zhí)行訪問網(wǎng)頁操作,主要步驟如下:第一步是分析其登陸頁面源碼,提取其xsrf值,因為登陸國產(chǎn)中需要用到這個值,同時還有驗證碼校驗,提取正確驗證碼才能進(jìn)行下一步的訪問;第二步用PythonScrapy框架編寫爬蟲軟件,通過spiders文件中的parse方法,通過該方法提取頁面源碼里的xsrf值,再將xsrf值寫入代碼的post方法;第三步針對部分頁面的驗證碼,通過手動輸入或者圖像識別的方法。采用手動輸入方法,是事先獲取到驗證碼圖片,然后用PIL庫中的Image類里面的show方法函數(shù),提取網(wǎng)頁的圖片,通過人為手動輸入進(jìn)去。采用圖像自動識別方法,是直接接入系統(tǒng)平臺使用圖像算法進(jìn)行識別,系統(tǒng)自動輸入驗證碼;第四步得到網(wǎng)頁的cookies信息對其進(jìn)行數(shù)據(jù)提取操作。(4)Selenium處理動態(tài)網(wǎng)頁方法:隨著爬蟲軟件框架的不斷進(jìn)步和發(fā)展,出現(xiàn)了一些網(wǎng)站頁面已經(jīng)開始采用動態(tài)頁面,必須對其頁面進(jìn)行相應(yīng)的操作,通過動態(tài)得出數(shù)據(jù)。首先通過分析網(wǎng)頁發(fā)來的Ajax請求,利用爬蟲軟件直接請求其相應(yīng)的接口獲取有效數(shù)據(jù),這種分析方法比較復(fù)雜,還有比較簡單的方式是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)新聞(信息)采集模塊負(fù)責(zé)抓取主流權(quán)威媒體新聞、本地職能部門權(quán)威發(fā)布信息、所轄縣、市政府權(quán)威發(fā)布信息和具有參考價值的其他相關(guān)網(wǎng)站信息。當(dāng)抓取網(wǎng)頁數(shù)據(jù)時,需要從訪問到的HTML源碼中提取數(shù)據(jù)。(2)數(shù)據(jù)庫負(fù)責(zé)存儲采集的素材、各網(wǎng)站爬蟲配置參數(shù)、單位組織結(jié)構(gòu)、用戶信息和系統(tǒng)必要的保護(hù)和備份等信息。(3)內(nèi)容展示模塊由前端展示頁面和后臺管理組成,包括登錄頁面、管理頁面、展示頁面、錯誤提示頁面組成。(4)管理使用Web應(yīng)用程序框架。新聞工作者用的WEB前端頁面可以輸入根據(jù)自定義的關(guān)鍵字來搜索信息,定制基于關(guān)鍵詞爬蟲的界面。用戶可以根據(jù)網(wǎng)絡(luò)新聞主題跟蹤功能的主題詞云推薦的主題詞,自行添加需要定制的主題及其關(guān)鍵詞。2.2新聞匯聚平臺各個模塊設(shè)計2.2.1Web前端設(shè)計新聞匯聚平臺前端是在Bootstrap框架上拓展開發(fā)的,該Web使用html語言來編寫新聞匯聚網(wǎng)頁內(nèi)容,通過JavaScript腳本語言定義網(wǎng)頁行為函數(shù),新聞工作者可以在瀏覽器上執(zhí)行相應(yīng)的編輯操作,執(zhí)行后給瀏覽器,這時瀏覽器與后端服務(wù)器建立TCP連接,并且使用HTTP進(jìn)行數(shù)據(jù)通信和交互,將新聞工作者在瀏覽器上執(zhí)行的操作和輸入提交內(nèi)容通過http傳送到后端服務(wù)器。新聞工作者無需關(guān)心數(shù)據(jù)時如何提交和獲取,只需簡單的輸入操作,并獲得頁面展示。Web前端主要有用戶登錄、任務(wù)新建、任務(wù)管理、數(shù)據(jù)查詢組成(1)用戶登錄功能:該功能是判別該用戶是否合法,對數(shù)據(jù)內(nèi)容起到保護(hù)作用,用戶需輸入正確的用戶名、密碼和驗證碼才能進(jìn)行主功能的操作;(2)任務(wù)新建功能;該功能是根據(jù)用戶操作新建相應(yīng)的子任務(wù),同時根據(jù)自動識別該任務(wù)的屬性歸類。新建所需爬取的相應(yīng)字段,包括該字段的名稱、字段XPath表達(dá)式以及字段正則表達(dá)式;(3)任務(wù)管理:該功能是將所有任務(wù)進(jìn)行歸類和統(tǒng)一處理,新聞工作可以對任務(wù)進(jìn)行增查刪改等操作,也可以修改每個任務(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)用軟件是運(yùn)行效率,設(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ù)表:表的字段主要有用戶名、郵箱、手機(jī)號、改用戶的創(chuàng)建時間以及修改時間等等;(2)任務(wù)信息數(shù)據(jù)表:表的字段主要有任務(wù)名、任務(wù)英文縮寫、任務(wù)的目標(biāo)網(wǎng)址、關(guān)鍵字、任務(wù)的創(chuàng)建時間以及任務(wù)的更新時間,表中的網(wǎng)址關(guān)鍵字主要使用在任務(wù)在執(zhí)行時url的爬取篩選處理,爬取得到有用的url并且過濾了大量的無效url;(3)字段數(shù)據(jù)表:表的字段主要有字段名、字段的英文縮寫、正則表達(dá)式項、XPath表達(dá)式項、字段的創(chuàng)建時間以及更新時間,XPath表達(dá)式字段主要用于定位網(wǎng)頁的數(shù)據(jù)位置,其中正則表達(dá)式是依據(jù)實際需求用于解析數(shù)據(jù);(4)任務(wù)樹數(shù)據(jù)表:表的字段主要有節(jié)點名稱、父節(jié)點名稱、任務(wù)數(shù)的創(chuàng)建時間以及任務(wù)樹的更新時間,在這當(dāng)中根節(jié)點即代表用戶名,其中剩余非葉子節(jié)點的父節(jié)點代表任務(wù)類型,這里的葉子節(jié)點就是實際單采集任務(wù)。2.2.3后臺系統(tǒng)設(shè)計本子系統(tǒng)在開發(fā)過程中使用了基于Python的Request庫以及l(fā)xml庫,其中Request庫是用于系統(tǒng)和所需Web站點的HTTP協(xié)議通信,所用的lxml庫對網(wǎng)頁內(nèi)容進(jìn)行解析,最核心的是采用PythonScrapy爬蟲框架。本系統(tǒng)主要功能分為兩個部分網(wǎng)頁解析和數(shù)據(jù)處理:(1)網(wǎng)頁解析設(shè)計: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è)計:每次完成任務(wù)后,數(shù)據(jù)處理將得到的數(shù)據(jù)進(jìn)行初步的篩選和剔除,同時把數(shù)據(jù)與任務(wù)種類進(jìn)行關(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)勢進(jìn)行充分的利益,有效應(yīng)對互聯(lián)網(wǎng)競爭的大潮。本系統(tǒng)實現(xiàn)了通過關(guān)鍵字或者組合關(guān)鍵字,實時、聚集的獲取相關(guān)新聞數(shù)據(jù),在建設(shè)過程中,解決對新聞線索的匯聚和聚類方案,以及如何推廣也是至關(guān)重要的。參考文獻(xiàn)[1]左衛(wèi)剛,基于Python的新聞聚合系統(tǒng)網(wǎng)絡(luò)爬蟲研究[J].長春師范大學(xué)學(xué)報,2018,37(12):29-33.[2]王婷婷.新聞大數(shù)據(jù)的應(yīng)用與展望[J].廣播電視信息,2018,315:25-26.[3]張維楚.互聯(lián)網(wǎng)熱點搜索與追蹤的研究和實現(xiàn)[J].廣播與電視技術(shù)20

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論