999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python的網(wǎng)絡(luò)爬蟲系統(tǒng)的設(shè)計與實(shí)現(xiàn)分析

2021-03-15 09:51:48新疆交通職業(yè)技術(shù)學(xué)院李文華
內(nèi)江科技 2021年2期
關(guān)鍵詞:信息系統(tǒng)設(shè)計

◇新疆交通職業(yè)技術(shù)學(xué)院 李文華

本文首先對Python與網(wǎng)絡(luò)爬蟲的概念進(jìn)行了簡要闡釋,并分析了基于Python的網(wǎng)絡(luò)爬蟲系統(tǒng)的基本原理;其后從關(guān)鍵設(shè)計原則與模塊結(jié)構(gòu)設(shè)計角度入手,提出了基于Python的網(wǎng)絡(luò)爬蟲系統(tǒng)的設(shè)計思路;最后對基于Python的網(wǎng)絡(luò)爬蟲系統(tǒng)的編程實(shí)現(xiàn)進(jìn)行了研究。

在“互聯(lián)網(wǎng)+”的新時代中,大數(shù)據(jù)技術(shù)、人工智能技術(shù)、應(yīng)用程序技術(shù)等現(xiàn)代科技與現(xiàn)代社會的融合關(guān)系日益緊密。在此背景下,Python逐漸從編程語言領(lǐng)域中脫穎而出,以其低成本、低難度、開放化、簡潔化等特點(diǎn)受到了人們的青睞與好評,并長期占據(jù)各大編程語言排行榜的領(lǐng)先地位。據(jù)此,我們有必要對基于Python的網(wǎng)絡(luò)爬蟲系統(tǒng)的設(shè)計與實(shí)現(xiàn)展開探究討論。

1 基于Python的網(wǎng)絡(luò)爬蟲系統(tǒng)的基本原理

網(wǎng)絡(luò)爬蟲亦稱“網(wǎng)頁追逐者”或“網(wǎng)頁蜘蛛”,是一種基于預(yù)設(shè)規(guī)則進(jìn)行網(wǎng)絡(luò)信息自動抓取的程序工具。現(xiàn)階段,網(wǎng)絡(luò)爬蟲還可根據(jù)應(yīng)用功能的不同,分化為全網(wǎng)爬蟲、聚焦爬蟲、增量爬蟲、深層爬蟲等多個種類,并在搜索引擎搭建、網(wǎng)絡(luò)信息檢索、網(wǎng)絡(luò)數(shù)據(jù)分析等領(lǐng)域發(fā)揮著重要作用。從基本結(jié)構(gòu)來看,網(wǎng)絡(luò)爬蟲系統(tǒng)主要由頁面采集模塊、頁面解析模塊、連接處理模塊等部分組成,其應(yīng)用運(yùn)行的主要流程為:首先,對待爬取的目標(biāo)網(wǎng)站進(jìn)行確定,并從已給定的初始URL鏈接中提取出一個,對該鏈接上的信息內(nèi)容進(jìn)行分析采集,最終儲存到數(shù)據(jù)庫當(dāng)中。其后,將網(wǎng)站中未經(jīng)訪問的鏈接納入到待爬行列表當(dāng)中,按照特定順序逐個進(jìn)行鏈接頁面的提取、訪問、分析、采集、儲存。最后,在循環(huán)執(zhí)行爬行動作并達(dá)到程序預(yù)設(shè)的停止條件時,網(wǎng)絡(luò)爬蟲系統(tǒng)即可自動終止運(yùn)行[1]。

在此基礎(chǔ)上,網(wǎng)絡(luò)爬蟲系統(tǒng)還可根據(jù)URL鏈接爬行路線的不同,分為遞歸網(wǎng)絡(luò)爬蟲與非遞歸網(wǎng)絡(luò)爬蟲兩種。其中,前者為單一性的線程設(shè)計,即在同一動作周期中只能對一個鏈接進(jìn)行分析處理;后者則為多線程設(shè)計,即以URL隊(duì)列為運(yùn)行支持,按照“初始URL鏈接→等待隊(duì)列→運(yùn)行隊(duì)列→錯誤隊(duì)列/完成隊(duì)列→完成URL爬行”的流程執(zhí)行網(wǎng)絡(luò)爬行任務(wù)。在此過程中,若判定某URL鏈接在信息采集的過程中出現(xiàn)下載錯誤、爬行失敗的情況,將會將該URL鏈接加入到錯誤隊(duì)列中,該隊(duì)列的URL鏈接將不會參與后續(xù)系統(tǒng)循環(huán)。

Python是目前應(yīng)用最廣泛的計算機(jī)編程語言之一,其本身攜帶有requests、bs4、pyspider等多個基礎(chǔ)庫,可為網(wǎng)絡(luò)爬蟲系統(tǒng)的代碼編寫與結(jié)構(gòu)搭建提供優(yōu)質(zhì)環(huán)境條件。因此,以Python為基礎(chǔ)進(jìn)行網(wǎng)絡(luò)爬蟲系統(tǒng)的設(shè)計與實(shí)現(xiàn),具有良好的可行性與適應(yīng)性。

2 基于Python的網(wǎng)絡(luò)爬蟲系統(tǒng)的設(shè)計思路

2.1 基于Python的網(wǎng)絡(luò)爬蟲系統(tǒng)的關(guān)鍵設(shè)計原則

為了實(shí)現(xiàn)Python編程語言下網(wǎng)絡(luò)爬蟲系統(tǒng)的順利產(chǎn)出,并確保網(wǎng)絡(luò)爬蟲系統(tǒng)在實(shí)際投用中的高效可靠、合法合規(guī),相關(guān)人員在設(shè)計實(shí)踐中應(yīng)遵循以下幾點(diǎn)關(guān)鍵設(shè)計原則。

第一,可行性原則。眾所周知,互聯(lián)網(wǎng)中的數(shù)據(jù)信息具有海量化特點(diǎn),若采取全網(wǎng)爬蟲的系統(tǒng)設(shè)計方式,將會形成大量不必要的時間浪費(fèi)與成本損耗。所以,相關(guān)人員在正式開展設(shè)計實(shí)踐之前,必須要明確網(wǎng)絡(luò)爬蟲系統(tǒng)的應(yīng)用目標(biāo)與爬行對象,以此實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲系統(tǒng)爬取信息主題、爬行動作范圍的精準(zhǔn)確定,保證網(wǎng)絡(luò)爬蟲系統(tǒng)在設(shè)計完成后具有高度的應(yīng)用可行性。同時,還需做好URL鏈接過濾機(jī)制、評價標(biāo)準(zhǔn)的合理設(shè)置,以進(jìn)一步確保網(wǎng)絡(luò)爬蟲系統(tǒng)設(shè)計與實(shí)現(xiàn)的“有的放矢”。

第二,避險性原則。在目前,為了保護(hù)網(wǎng)頁信息,很多網(wǎng)站會設(shè)計出一定的“反爬取”機(jī)制,進(jìn)而導(dǎo)致網(wǎng)絡(luò)爬蟲系統(tǒng)在運(yùn)行過程中出現(xiàn)異常,不僅難以達(dá)到預(yù)期的網(wǎng)絡(luò)信息采集效果,還會對爬蟲系統(tǒng)本身的爬取有效性產(chǎn)生影響。例如,一些網(wǎng)頁會依托動態(tài)技術(shù)構(gòu)建出“爬蟲陷阱”。當(dāng)網(wǎng)絡(luò)爬蟲系統(tǒng)在此類網(wǎng)絡(luò)中執(zhí)行信息爬取任務(wù)時,該URL鏈接的地址日歷會發(fā)生頻繁更改,進(jìn)而導(dǎo)致網(wǎng)絡(luò)爬蟲系統(tǒng)循環(huán)往復(fù)地登入同一個地址,陷入到重復(fù)抓取、無法跳出的境地當(dāng)中。在基于Python的網(wǎng)絡(luò)爬蟲系統(tǒng)設(shè)計當(dāng)中,為了防止此類情況出現(xiàn),相關(guān)人員務(wù)必要貫徹落實(shí)避險性原則,對反爬取的陷阱風(fēng)險進(jìn)行提前感知、預(yù)先防范。例如,可設(shè)置出網(wǎng)絡(luò)爬蟲系統(tǒng)對同一網(wǎng)站的最大抓取次數(shù),當(dāng)網(wǎng)絡(luò)爬蟲系統(tǒng)在單一網(wǎng)頁中重復(fù)抓取信息的次數(shù)超過預(yù)設(shè)限值,該任務(wù)就會主動結(jié)束,從而使網(wǎng)絡(luò)爬蟲系統(tǒng)及時跳出陷阱網(wǎng)頁,轉(zhuǎn)而進(jìn)行URL隊(duì)列中其他鏈接的信息爬取[2]。

第三,合理性原則。在網(wǎng)絡(luò)爬蟲系統(tǒng)的應(yīng)用實(shí)踐中,會涉及到一種名為“robots”的安全協(xié)議,其對爬取行為具有約束性作用。當(dāng)網(wǎng)絡(luò)爬蟲系統(tǒng)作用于某一網(wǎng)站時,會首先訪問該網(wǎng)站的robots.txt文本,以得知該網(wǎng)站中不被允許搜索采集的具體內(nèi)容,或網(wǎng)絡(luò)爬蟲系統(tǒng)被賦予的有限權(quán)限。然后,網(wǎng)絡(luò)爬蟲系統(tǒng)便可依據(jù)協(xié)議內(nèi)容,實(shí)施有選擇、有約束的信息爬取行為。同理,若網(wǎng)絡(luò)爬蟲系統(tǒng)在爬取某網(wǎng)站時,并未檢測到robots.txt文本存在,也就意味著該網(wǎng)站的所有信息均處于無協(xié)議保護(hù)的狀態(tài),網(wǎng)絡(luò)爬蟲系統(tǒng)可進(jìn)行自由無拘的采集活動。基于此,由于robots在本質(zhì)上是網(wǎng)站與網(wǎng)絡(luò)爬蟲系統(tǒng)之間的一種通俗協(xié)議,而非強(qiáng)制性的規(guī)定。所以,相關(guān)設(shè)計人員應(yīng)將robots.txt文本的檢測與約束機(jī)制納入到設(shè)計過程中,以保證網(wǎng)絡(luò)爬蟲系統(tǒng)投用運(yùn)行的合理性與禮貌性。

2.2 基于Python的網(wǎng)絡(luò)爬蟲系統(tǒng)的模塊結(jié)構(gòu)設(shè)計

在實(shí)踐中,相關(guān)人員可以如圖1的網(wǎng)絡(luò)信息爬取流程為基礎(chǔ),進(jìn)行網(wǎng)絡(luò)爬蟲系統(tǒng)總體結(jié)構(gòu)的設(shè)計。具體來講,應(yīng)包含系統(tǒng)調(diào)度、URL鏈接管理、網(wǎng)頁下載、網(wǎng)頁解析、數(shù)據(jù)儲存、robots管理、線程管理以及風(fēng)險處理八個功能部分。

第一,系統(tǒng)調(diào)度模塊為網(wǎng)絡(luò)爬蟲系統(tǒng)的“頭腦”,主要負(fù)責(zé)其他功能模塊的調(diào)度控制與指令管理。在系統(tǒng)運(yùn)行的過程當(dāng)中,系統(tǒng)調(diào)度模塊應(yīng)與其他模塊持續(xù)建立反饋連接,當(dāng)某一模塊的動作結(jié)束后,系統(tǒng)調(diào)度模塊可同步向下一環(huán)節(jié)模塊發(fā)出驅(qū)動指令,以推動網(wǎng)絡(luò)信息爬取流程的進(jìn)展,直至滿足預(yù)設(shè)程序的全部條件,即爬取任務(wù)完全結(jié)束。

第二,URL鏈接管理模塊主要作用于網(wǎng)絡(luò)爬蟲系統(tǒng)涉及到的所有URL鏈接,如待爬取URL鏈接、已爬取URL鏈接、新URL鏈接對象等。

第三,網(wǎng)頁下載模塊為網(wǎng)絡(luò)爬蟲系統(tǒng)獲取網(wǎng)頁信息的工具,當(dāng)網(wǎng)絡(luò)爬蟲系統(tǒng)進(jìn)入到URL鏈接的網(wǎng)頁界面后,網(wǎng)頁下載模塊會自動啟動下載功能,對HTML、XML、JSON等多種數(shù)據(jù)文件進(jìn)行下載爬取。

第四,網(wǎng)頁解析模塊位于網(wǎng)頁下載模塊后端,當(dāng)網(wǎng)絡(luò)爬蟲系統(tǒng)獲取到網(wǎng)頁中的海量數(shù)據(jù)信息后,網(wǎng)頁解析模塊可對數(shù)據(jù)信息進(jìn)行去噪處理,從而實(shí)現(xiàn)冗余性文件的有效剔除,僅保留用戶所需的相關(guān)數(shù)據(jù)。

第五,數(shù)據(jù)存儲模塊主要作為計算機(jī)存儲空間與網(wǎng)絡(luò)爬蟲系統(tǒng)的連接紐帶。當(dāng)目標(biāo)信息采集、處理完成后,數(shù)據(jù)存儲模塊即可對數(shù)據(jù)信息的類型進(jìn)行判斷。若數(shù)據(jù)具備結(jié)構(gòu)化特點(diǎn),則將其導(dǎo)入到數(shù)據(jù)庫當(dāng)中;若數(shù)據(jù)為非結(jié)構(gòu)化,則將其直接導(dǎo)入計算機(jī)的本地硬盤。在此基礎(chǔ)上,再輔以簡潔合理的索引機(jī)制,即可滿足已爬取信息的檢索利用需求。

第六,robots管理模塊主要用于檢測、下載與更新目標(biāo)網(wǎng)站的robots.txt文本文件,并對robots文本中的允許訪問目錄或限制訪問目錄進(jìn)行感知。當(dāng)系統(tǒng)調(diào)度模塊獲得robots管理模塊的信息反饋后,即可按照相應(yīng)權(quán)限進(jìn)行爬取指令的下達(dá),以保證網(wǎng)絡(luò)爬蟲系統(tǒng)的運(yùn)行邊界持續(xù)處在網(wǎng)站允許范圍內(nèi),從而將網(wǎng)絡(luò)爬蟲系統(tǒng)的信息爬取行為維持在較高的合理性與禮貌性水平當(dāng)中。

第七,線程管理模塊主要用于多線程的網(wǎng)絡(luò)爬蟲系統(tǒng),相關(guān)人員在設(shè)計時,應(yīng)保證系統(tǒng)線程具備良好的靈活性,即用戶可根據(jù)具體的URL鏈接數(shù)量進(jìn)行線程數(shù)調(diào)整,以確保網(wǎng)絡(luò)爬蟲系統(tǒng)運(yùn)行資源的有效分配,達(dá)成較高網(wǎng)絡(luò)爬蟲系統(tǒng)的網(wǎng)絡(luò)信息爬取效率。

第八,風(fēng)險處理模塊主要是為了應(yīng)對各類反爬取機(jī)制而形成的。在基于Python的網(wǎng)絡(luò)爬蟲系統(tǒng)設(shè)計中,相關(guān)人員應(yīng)制定出多種風(fēng)險處理方案,如爬蟲陷阱循環(huán)訪問風(fēng)險的有效規(guī)避、同一URL鏈接下網(wǎng)站內(nèi)容的變更適應(yīng)等,并落實(shí)到Python語言的代碼編程當(dāng)中。

圖1 網(wǎng)絡(luò)爬蟲系統(tǒng)的基本流程

3 基于Python的網(wǎng)絡(luò)爬蟲系統(tǒng)的實(shí)現(xiàn)研究

在運(yùn)行流程、模塊結(jié)構(gòu)設(shè)計完成后,相關(guān)人員即可依托Python開發(fā)平臺,進(jìn)行網(wǎng)絡(luò)爬蟲系統(tǒng)的開發(fā)實(shí)現(xiàn)。具體來講,各類模塊的實(shí)現(xiàn)策略如下所示。

第一,系統(tǒng)調(diào)度模塊的實(shí)現(xiàn)。在Python開發(fā)環(huán)境中建立初始模塊“__main__”,并在該模塊中建立Spidermain類。然后,按照圖1的系統(tǒng)運(yùn)行流程,開放信息爬區(qū)目標(biāo)選定、系統(tǒng)參數(shù)設(shè)置、robots.txt導(dǎo)入、URL鏈接提取、robots.txt目錄檢查、頁面信息下載、頁面信息解析、爬取信息儲存等環(huán)節(jié)模塊的調(diào)度權(quán)限。最后,對各項(xiàng)模塊參數(shù)進(jìn)行初始化,即可正式啟動網(wǎng)絡(luò)爬蟲系統(tǒng)。

第二,URL鏈接管理模塊的實(shí)現(xiàn)。以Python開發(fā)平臺的set去重功能為基礎(chǔ),創(chuàng)建出“已爬取”與“待爬取”兩個URL隊(duì)列。然后,使用set的pop算法,對待爬取隊(duì)列中的URL隊(duì)列進(jìn)行隨機(jī)選取,以此作為網(wǎng)絡(luò)爬蟲系統(tǒng)下一環(huán)節(jié)的信息爬取目標(biāo)[3]。

第三,網(wǎng)頁下載模塊的實(shí)現(xiàn)。依托request基礎(chǔ)庫的urlopen工具,對目標(biāo)網(wǎng)頁中的數(shù)據(jù)信息進(jìn)行下載獲取。在此基礎(chǔ)上,可進(jìn)一步設(shè)置headers代碼,從而在實(shí)現(xiàn)網(wǎng)頁下載功能的同時,將網(wǎng)絡(luò)爬蟲系統(tǒng)的行為偽裝為瀏覽器訪問,以進(jìn)一步提高信息獲取的成功幾率。

第四,網(wǎng)頁解析模塊的實(shí)現(xiàn)。在Python平臺中,網(wǎng)頁解析模塊可依托Beautiful Soup基礎(chǔ)庫以及l(fā)xml?解析器進(jìn)行搭建實(shí)現(xiàn)。其程序代碼包括“soup=BeautifulSoup(data,“l(fā)xml”)”、“urls=soup.find_all('a',href=re.compile(pattern[,flag])”等。

第五,數(shù)據(jù)存儲模塊的實(shí)現(xiàn)。數(shù)據(jù)存儲模塊在網(wǎng)絡(luò)爬蟲系統(tǒng)與MySQL數(shù)據(jù)庫之間建立連接,實(shí)現(xiàn)爬取信息向pymysql模塊的導(dǎo)入。其程序代碼包括“sql=“insert into `table(`datal`,`data2`,`data3`)values(%s,%s,%s)”、“connnection.cmmit()”等。

第六,其他功能模塊的實(shí)現(xiàn)。線程管理、風(fēng)險處理等其他模塊可依托Python平臺的threading、urllib.error等基礎(chǔ)庫實(shí)現(xiàn)。

4 結(jié)語

總而言之,在利用Python編程語言及開發(fā)平臺進(jìn)行網(wǎng)絡(luò)爬蟲系統(tǒng)的設(shè)計與實(shí)現(xiàn)時,相關(guān)人員需要充分考慮到網(wǎng)絡(luò)爬蟲系統(tǒng)復(fù)雜多樣的功能需求,以及其在應(yīng)用過程中可能遇到的陷阱風(fēng)險、robots協(xié)議等問題,繼而設(shè)計出功能完善的模塊結(jié)構(gòu)方案與系統(tǒng)運(yùn)行流程,并付諸于編程實(shí)踐當(dāng)中,以確保網(wǎng)絡(luò)爬蟲系統(tǒng)可行性、避險性、合理性等原則的充分體現(xiàn)。

猜你喜歡
信息系統(tǒng)設(shè)計
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機(jī)系統(tǒng)
ZC系列無人機(jī)遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
瞞天過海——仿生設(shè)計萌到家
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
設(shè)計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
有種設(shè)計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
設(shè)計之味
舒適廣告(2008年9期)2008-09-22 10:02:48
主站蜘蛛池模板: 亚洲热线99精品视频| 国产在线欧美| 久草美女视频| 尤物亚洲最大AV无码网站| 亚洲一级毛片免费看| 无码中字出轨中文人妻中文中| 亚洲天堂精品视频| 2020久久国产综合精品swag| 人妻少妇乱子伦精品无码专区毛片| 国产一级毛片在线| 91在线丝袜| 亚洲中文字幕久久无码精品A| 免费国产在线精品一区| 国产成人久视频免费| 91久久夜色精品| 国产特级毛片| 国产一区二区三区精品久久呦| 99视频在线免费| 国产精品无码翘臀在线看纯欲| 国产99免费视频| 国产色爱av资源综合区| 午夜国产精品视频| 亚洲天堂日韩av电影| 国产成人高清在线精品| 成人免费网站久久久| 亚洲日韩图片专区第1页| 午夜日韩久久影院| 成人综合网址| 国产69精品久久| 精品日韩亚洲欧美高清a | 久久特级毛片| 国产在线视频自拍| 伊人久久大线影院首页| 国产精品视频观看裸模| 欧美翘臀一区二区三区| 国产成人超碰无码| 欧美午夜网站| 国产精品专区第1页| 在线综合亚洲欧美网站| 制服丝袜在线视频香蕉| 日韩精品亚洲精品第一页| 日韩欧美国产中文| 91系列在线观看| 日本午夜网站| 国内丰满少妇猛烈精品播| 2020最新国产精品视频| 亚洲国模精品一区| 亚洲一区二区三区中文字幕5566| 全部免费毛片免费播放| 久久成人免费| 中文国产成人精品久久| 国产女人水多毛片18| 日韩毛片在线播放| 亚洲国产欧美自拍| Aⅴ无码专区在线观看| 免费Aⅴ片在线观看蜜芽Tⅴ| 日韩精品无码免费专网站| 久久大香香蕉国产免费网站| 伊人成人在线视频| 夜夜操天天摸| 国产成人亚洲精品色欲AV | 97精品伊人久久大香线蕉| 一级全黄毛片| 亚洲国产欧美国产综合久久 | 女人一级毛片| 亚洲成人福利网站| 天天激情综合| аⅴ资源中文在线天堂| 日韩中文精品亚洲第三区| 国产午夜在线观看视频| 国产一级一级毛片永久| 亚洲成人77777| 原味小视频在线www国产| 欧美激情二区三区| 四虎综合网| 国产91精品调教在线播放| 国产xxxxx免费视频| 六月婷婷综合| 国产91精品调教在线播放| 国产一级精品毛片基地| 天堂在线视频精品| 国产成人欧美|