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

?

基于Python的網(wǎng)絡(luò)爬蟲技術(shù)的研究

2021-03-19 01:17:38桂林電子科技大學(xué)
電子世界 2021年3期
關(guān)鍵詞:爬蟲瀏覽器代碼

桂林電子科技大學(xué) 李 彥

本文介紹了Python技術(shù)的網(wǎng)絡(luò)爬蟲系統(tǒng)的特點(diǎn)和工作原理,對網(wǎng)絡(luò)爬蟲的應(yīng)用邏輯做了詳細(xì)的介紹,同時(shí),通過對爬蟲技術(shù)、數(shù)據(jù)分析在旅游行業(yè)的應(yīng)用的研究,亦為爬蟲技術(shù)、數(shù)據(jù)分析在其他行業(yè)如商務(wù)、醫(yī)學(xué)、教育、科學(xué)與工程等各個(gè)方面的應(yīng)用提供有價(jià)值的應(yīng)用參考。

網(wǎng)絡(luò)爬蟲(Crawler)作為一種古老的網(wǎng)絡(luò)技術(shù),它伴隨著大數(shù)據(jù)與人工智能時(shí)代的來臨而受到越來越多人的重視與青睞。具有足夠豐富的功能的Python在網(wǎng)絡(luò)爬蟲技術(shù)中脫穎而出。在日常的工作中,給予了強(qiáng)大的數(shù)據(jù)信息支持技,解決了企業(yè)信息采集、市場數(shù)據(jù)分析、信息自動(dòng)匹配等問題。通俗的講爬蟲就是把你手動(dòng)打開窗口、輸入數(shù)據(jù)等等操作用程序代替。用程序替你獲取你想要的信息。爬蟲的關(guān)鍵是:“匹配”“采集”“自動(dòng)化”。

1 網(wǎng)絡(luò)爬蟲技術(shù)的應(yīng)用場景

話說是因?yàn)橛辛藈eb才有了爬蟲,目前市面上的爬蟲技術(shù)應(yīng)用都是圍繞著web網(wǎng)頁進(jìn)行的。

現(xiàn)實(shí)生活中很多網(wǎng)絡(luò)信息檢索、存儲(chǔ)之中都會(huì)通過網(wǎng)絡(luò)爬蟲技術(shù)來實(shí)現(xiàn)網(wǎng)頁中數(shù)據(jù)爬取、分析和采集。比如人們在生活場景中常用到搜索引擎進(jìn)行信息查閱,包括谷歌、百度、搜狗的等,都運(yùn)用到了搜索技術(shù);網(wǎng)絡(luò)購物、互聯(lián)網(wǎng)電商平臺、線上旅游OTA平臺等,要用到爬蟲技術(shù)獲取自身想要的網(wǎng)絡(luò)數(shù)據(jù)信息從而實(shí)現(xiàn)數(shù)據(jù)分析的需求的場景,該技術(shù)得到了廣泛的應(yīng)用。

2 Python語言的介紹

Python語言是高級語言,由Guido van Russum在阿姆斯特丹于1989年的圣誕節(jié)期間首次被設(shè)計(jì)完成,1991年第一次公開發(fā)行文本。它是一種解釋性語言,你可以用它來創(chuàng)建網(wǎng)頁應(yīng)用、游戲和搜索引擎。多個(gè)領(lǐng)域都會(huì)見到Python的身影,如:云計(jì)算、web開發(fā)、科學(xué)運(yùn)算、人工智能、金融量化交易等。同時(shí),該語言具有獨(dú)特的語法結(jié)構(gòu),擁有較強(qiáng)的可讀性,具備互交性、結(jié)構(gòu)簡單、代碼清晰、可移植、源代碼已維護(hù)、可嵌入以及可拓展等特點(diǎn),適合完成高層人物,幾乎可以再所有操作系統(tǒng)中運(yùn)行。若要使用Python語言來實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲技術(shù),應(yīng)當(dāng)充分利用Python語言簡潔以及資源豐富的優(yōu)勢。如在研發(fā)網(wǎng)絡(luò)爬蟲系統(tǒng)的獲取網(wǎng)絡(luò)數(shù)據(jù)信息時(shí),無需較為復(fù)雜的代碼編輯器、調(diào)試器等工具,可使用Eclipse通過插件作為Python語言的開發(fā)工具。

3 Python語言編寫網(wǎng)絡(luò)爬蟲系統(tǒng)的優(yōu)勢

軟件質(zhì)量高。秉承了簡潔、清晰的特點(diǎn),擁有高度一致的編程模式,簡單易學(xué),容易上手。設(shè)計(jì)風(fēng)格從始至終不做改變,可保證開發(fā)者在統(tǒng)一規(guī)則內(nèi)設(shè)計(jì)出規(guī)范性的代碼。如若出現(xiàn)錯(cuò)誤代碼,Python提供了合理的“退出機(jī)制”。

開發(fā)速度快。Python不需要復(fù)雜的IDE,它可以簡單到只用一個(gè)文本編輯器,對多數(shù)中小型應(yīng)用進(jìn)行開發(fā)。無需編譯也無需調(diào)試,往往只需要幾十行代碼就可以開發(fā)出需要幾百行C代碼才能實(shí)現(xiàn)的功能。

功能強(qiáng)大。為了實(shí)現(xiàn)更多的功能,Python內(nèi)置了許多預(yù)編碼的庫工具。ScraPy是一個(gè)為了爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架??蛇\(yùn)用到信息搜索、數(shù)據(jù)識別、存儲(chǔ)歷史數(shù)據(jù)等一系列程序中。同時(shí),Python還有很多強(qiáng)大的框架幫助編程者實(shí)現(xiàn)更多功能。例如:TruboGears、Django、Pylons等。

易于擴(kuò)展??赏ㄟ^C或者C++編寫的模塊進(jìn)行拓展,也十分擅長做文本處理和字符串處理。

4 基于Python網(wǎng)絡(luò)爬蟲技術(shù)的數(shù)據(jù)爬取研究

通過獲取網(wǎng)絡(luò)數(shù)據(jù)的方式有兩種:

方式1:發(fā)出請求--->匹配網(wǎng)頁代碼--->解析成頁面。

方式2:模擬瀏覽器發(fā)送請求(獲取網(wǎng)頁代碼)->提取有用的數(shù)據(jù)->存放于數(shù)據(jù)庫或文件中。

爬蟲要做的就是方式2;

爬蟲主要步驟:

(1)分析目標(biāo)網(wǎng)站,明晰目標(biāo)網(wǎng)站結(jié)構(gòu),理清關(guān)鍵數(shù)據(jù)位置。(2)發(fā)起請求:使用http庫或?yàn)g覽器模擬工具向目標(biāo)站點(diǎn)發(fā)起請求,即發(fā)送一個(gè)Request。(3)獲取響應(yīng)內(nèi)容。如果得到了一個(gè)Response,Response包含:html,json,圖片,視頻等。說明瀏覽器能正常響應(yīng)。(4)解析內(nèi)容:解析html數(shù)據(jù):正則表達(dá)式(RE模塊),第三方解析庫如Beautifulsoup,lxml等。解析json數(shù)據(jù):json模塊;通過解析html、json或其他數(shù)據(jù),獲得想要的關(guān)鍵數(shù)據(jù)信息,或者是下一個(gè)待爬取的URL地址。(5)保存數(shù)據(jù)。雖然網(wǎng)絡(luò)爬蟲可以方便地為人們獲取感性區(qū)的信息數(shù)據(jù),但在進(jìn)行網(wǎng)絡(luò)爬蟲時(shí),亦應(yīng)了解網(wǎng)絡(luò)爬蟲引發(fā)的問題。

網(wǎng)絡(luò)爬蟲的“性能”騷擾:

web默認(rèn)接受人類訪問,由于網(wǎng)絡(luò)爬蟲的頻繁訪問會(huì)給服務(wù)器帶來巨大的額資源開銷。

網(wǎng)絡(luò)爬蟲的法律風(fēng)險(xiǎn):

服務(wù)器上的數(shù)據(jù)有產(chǎn)權(quán)歸屬,網(wǎng)絡(luò)爬蟲獲取數(shù)據(jù)牟利將帶來法律風(fēng)險(xiǎn)。

網(wǎng)絡(luò)爬蟲的隱私泄露:

網(wǎng)絡(luò)爬蟲可能具備突破簡單控制訪問的能力,獲取被保護(hù)的數(shù)據(jù)從而泄露個(gè)人隱私。

5 Python網(wǎng)絡(luò)爬蟲應(yīng)用關(guān)鍵技術(shù)

頁面請求:

網(wǎng)絡(luò)爬蟲的第一個(gè)實(shí)現(xiàn)步驟就是模擬瀏覽器向目標(biāo)網(wǎng)站的服務(wù)器發(fā)送請求,以獲得頁面的響應(yīng)數(shù)據(jù)。

目標(biāo)網(wǎng)站的web可分為動(dòng)態(tài)頁面和靜態(tài)頁面兩種,二者是存在區(qū)別的。

在靜態(tài)頁面程序里,客戶端通過網(wǎng)絡(luò),將web瀏覽器鏈接在服務(wù)器上,利用HTTP協(xié)議發(fā)起一個(gè)與需求一致的請求,將需求準(zhǔn)確的告知服務(wù)區(qū),web服務(wù)器接到請求后,服務(wù)器將會(huì)根據(jù)接收到的需求信息,從文件系統(tǒng)(存放了所有靜態(tài)頁面的磁盤)取出內(nèi)容。之后通過web服務(wù)器返回給客戶端,客戶端接收到內(nèi)容之后經(jīng)過瀏覽器渲染解析,得到顯示的效果。為了讓靜態(tài)web頁面顯示更加好看,使用javascript/VBScript/ajax.但是這些特效都是在客戶端上借助于瀏覽器展現(xiàn)給用戶的,所以在服務(wù)器上本身并沒有任何的變化。

靜態(tài)頁web的缺點(diǎn)是:因JS的大量使用,瀏覽器頁面必須打開,大量的內(nèi)存被占用,雖然減輕了服務(wù)端的壓力,但客戶端的壓力加重了。

動(dòng)態(tài)web的不同之處在于所有的請求會(huì)先經(jīng)過一個(gè)WEB Server來處理,雖然程序仍舊會(huì)用客戶端和服務(wù)端,但可以通過網(wǎng)絡(luò)連接到服務(wù)器上,使用HTTP協(xié)議發(fā)起請求,一定程度上減輕了服務(wù)端與客戶端的壓力。

針對不同頁面Python語言有相應(yīng)的方便簡單的頁面獲取庫,例如requests庫及Selenium庫,而對于比較大型的網(wǎng)站,則可以使用scryapy開源架構(gòu)。

6 爬蟲系統(tǒng)的功能應(yīng)用舉例

旅游電商數(shù)據(jù)采集應(yīng)用場景為例,基于爬蟲的一日游與多日游數(shù)據(jù)分析系統(tǒng)需要實(shí)現(xiàn)以下功能:

數(shù)據(jù)爬取功能:實(shí)現(xiàn)從主流旅游信息平臺爬取多區(qū)域多省份的一日游/多日游項(xiàng)目的產(chǎn)品信息,信息內(nèi)容包括地點(diǎn)名稱,價(jià)格區(qū)間,店鋪名稱,產(chǎn)品銷量,產(chǎn)品具體行程,用戶評分。爬取過程應(yīng)實(shí)現(xiàn)自動(dòng)化的入口網(wǎng)址記錄,產(chǎn)品詳情頁巡游,停止條件判斷,關(guān)鍵信息定位及提取、異常處理及容錯(cuò)。

數(shù)據(jù)清洗功能:包括處理缺失數(shù)據(jù)、添加默認(rèn)值、刪除不完整的行、刪除不完整的列、規(guī)范化數(shù)據(jù)類型、必要的轉(zhuǎn)換、重命名列名等。例如對于一日游與多日游源數(shù)據(jù)中的行程信息,需要對其進(jìn)行二次轉(zhuǎn)換,將行程數(shù)據(jù)中的地點(diǎn)名稱進(jìn)行分割。

數(shù)據(jù)存儲(chǔ)功能:實(shí)現(xiàn)對已清洗數(shù)據(jù)的格式化、持久化存儲(chǔ)存儲(chǔ),考慮到系統(tǒng)的穩(wěn)定性及對后續(xù)業(yè)務(wù)的支持,系統(tǒng)存儲(chǔ)的方式包括文本文件存儲(chǔ)、關(guān)系型數(shù)據(jù)庫存儲(chǔ)。

數(shù)據(jù)呈現(xiàn)功能:將分析結(jié)果以直觀、清晰的可視化圖像呈現(xiàn)給使用者。

交互功能:實(shí)現(xiàn)使用者與系統(tǒng)的交互,如對一日游與多日游數(shù)據(jù)種類的選擇,地區(qū)數(shù)據(jù)的選擇等。以馬蜂窩網(wǎng)站獲取一日游數(shù)據(jù)為例,整個(gè)系統(tǒng)的業(yè)務(wù)邏輯為:數(shù)據(jù)爬取--數(shù)據(jù)清洗--數(shù)據(jù)存儲(chǔ)--數(shù)據(jù)分析--分析結(jié)果可視化。因此,整個(gè)系統(tǒng)將劃分為以下多個(gè)模塊來實(shí)現(xiàn),如圖1所示紅色虛線內(nèi)所示。

圖1 系統(tǒng)架構(gòu)圖

系統(tǒng)爬取馬蜂窩所有目的地的區(qū)域編碼思路如下:

(1)向馬蜂窩目的地首頁'https://www.mafengwo.cn/mdd/'發(fā)送請求,獲取頁面響應(yīng)html源碼。

(2)在響應(yīng)的頁面html源碼中,找到class屬性為'hot-list clearfix'的

標(biāo)簽。

(3)在class屬性為'hot-list clearfix'的

標(biāo)簽內(nèi)部,找到所有
。

(4)在所有

里,找到附帶href屬性的標(biāo)簽,并從href屬性的鏈接URL中提取馬蜂窩地區(qū)代碼。

(5)保存所有地區(qū)代碼。

結(jié)束語:本文深入研究網(wǎng)路爬蟲技術(shù),深入理解網(wǎng)絡(luò)爬蟲的概念、運(yùn)行機(jī)制、實(shí)現(xiàn)邏輯、技術(shù)難點(diǎn)等各個(gè)方面。滿足不同的用戶在不同場景下對數(shù)據(jù)信息的采集需求。編程者可通過自己在網(wǎng)絡(luò)上搜索、分析轉(zhuǎn)換為自己所需的數(shù)據(jù),爬蟲讓互聯(lián)網(wǎng)信息的世界變得簡單化和清晰化。爬蟲強(qiáng)大的文本處理庫和網(wǎng)絡(luò)支持庫,可以加速實(shí)現(xiàn)互聯(lián)網(wǎng)數(shù)據(jù)信息的整理,提高數(shù)據(jù)使用者的工作效率,在互聯(lián)網(wǎng)經(jīng)濟(jì)中占據(jù)著不可忽視的地位。

猜你喜歡
爬蟲瀏覽器代碼
利用網(wǎng)絡(luò)爬蟲技術(shù)驗(yàn)證房地產(chǎn)灰犀牛之說
基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究
反瀏覽器指紋追蹤
電子制作(2019年10期)2019-06-17 11:45:14
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
利用爬蟲技術(shù)的Geo-Gnutel la VANET流量采集
電子測試(2018年1期)2018-04-18 11:53:04
大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)
電子制作(2017年9期)2017-04-17 03:00:46
環(huán)球?yàn)g覽器
宁南县| 台中市| 淮南市| 邵阳县| 高清| 蒙山县| 新源县| 正安县| 岢岚县| 建瓯市| 泸定县| 法库县| 武冈市| 青河县| 江源县| 镇平县| 惠东县| 青岛市| 依兰县| 泽普县| 奉节县| 宜春市| 全南县| 滨州市| 香河县| 安龙县| 松溪县| 天柱县| 东海县| 洪湖市| 桓仁| 顺昌县| 洛隆县| 北宁市| 民权县| 剑川县| 西盟| 新巴尔虎左旗| 西和县| 湟中县| 会泽县|