亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Python的網(wǎng)絡(luò)爬蟲(chóng)的設(shè)計(jì)與實(shí)現(xiàn)

        2020-07-23 16:35:17高祖彥
        商情 2020年33期
        關(guān)鍵詞:網(wǎng)絡(luò)爬蟲(chóng)設(shè)計(jì)與實(shí)現(xiàn)

        【摘要】一個(gè)爬蟲(chóng)從網(wǎng)上爬取數(shù)據(jù)的大致過(guò)程可以概括為:向特定的網(wǎng)站服務(wù)器發(fā)出請(qǐng)求,服務(wù)器返回請(qǐng)求的網(wǎng)頁(yè)數(shù)據(jù),爬蟲(chóng)程序收到服務(wù)器返回的網(wǎng)頁(yè)數(shù)據(jù)并加以解析提取,最后把提取出的數(shù)據(jù)進(jìn)行處理和存儲(chǔ)。因此,一個(gè)爬蟲(chóng)程序可以主要分為三大部分:向服務(wù)器請(qǐng)求并獲取網(wǎng)頁(yè)數(shù)據(jù)、解析網(wǎng)頁(yè)數(shù)據(jù)、數(shù)據(jù)處理和存儲(chǔ)。

        【關(guān)鍵詞】Python;網(wǎng)絡(luò)爬蟲(chóng);設(shè)計(jì)與實(shí)現(xiàn)

        一、引言

        隨著網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,互聯(lián)網(wǎng)中的信息呈現(xiàn)爆炸式的增長(zhǎng),互聯(lián)網(wǎng)的信息容量也達(dá)到了一個(gè)前所未有的高度。為了方便人們獲取互聯(lián)網(wǎng)中的信息,出現(xiàn)了一批搜索引擎。傳統(tǒng)的搜索引擎在返回的結(jié)果方面有局限性,網(wǎng)絡(luò)爬蟲(chóng)因此而誕生。網(wǎng)絡(luò)爬蟲(chóng)又名叫網(wǎng)絡(luò)機(jī)器人,它是一種按照特定規(guī)則爬取網(wǎng)頁(yè)信息的程序。與傳統(tǒng)搜索引擎不同,網(wǎng)絡(luò)爬蟲(chóng)只爬取想要獲得的特定類型的信息,進(jìn)而提高搜索引擎的效率。

        二、Python語(yǔ)言

        Python語(yǔ)言是一種比較常用的開(kāi)發(fā)網(wǎng)址工具,這種語(yǔ)言自身具有非常強(qiáng)大功能。近些年,隨著互聯(lián)網(wǎng)行業(yè)的快速發(fā)展,各種行業(yè)自身都需要擁有自己的網(wǎng)址,這就給Phthon語(yǔ)言的應(yīng)用提供了很大發(fā)展機(jī)會(huì)。Python語(yǔ)言能夠兼容各種不同類型的操作系統(tǒng)。站在網(wǎng)址開(kāi)發(fā)的角度上分析來(lái)說(shuō)Python是屬于面向?qū)ο笳Z(yǔ)言,這種編程語(yǔ)言能夠在短時(shí)間內(nèi)實(shí)現(xiàn)對(duì)象編程,Python屬于解釋性語(yǔ)言,整體通過(guò)簡(jiǎn)單的語(yǔ)法與動(dòng)態(tài)輸入有力支持,使得Python逐漸成為各種操作系統(tǒng)平臺(tái)上常用的腳本語(yǔ)言之一,特別是那些追求高性能的綜合應(yīng)用程序開(kāi)發(fā)過(guò)程中Python語(yǔ)言占有重要地位。

        三、獲取網(wǎng)頁(yè)數(shù)據(jù)

        在Python中,一般爬蟲(chóng)主要是通過(guò)一個(gè)python的第三方庫(kù)requests來(lái)實(shí)現(xiàn)這個(gè)過(guò)程的,requests庫(kù)提供了兩種發(fā)起請(qǐng)求的方法,分別為get()何post(),這也是大部分網(wǎng)站都會(huì)實(shí)現(xiàn)的兩個(gè)接口。一般地,get()方法直接通過(guò)url參數(shù)(有時(shí)候還需要請(qǐng)求頭參數(shù))便可以發(fā)起有效請(qǐng)求;post()方法除此之外還需要一些額外的表單參數(shù),才可以發(fā)起有效請(qǐng)求。

        在獲取網(wǎng)頁(yè)數(shù)據(jù)的這個(gè)過(guò)程中,常遇到的問(wèn)題是網(wǎng)站運(yùn)用了異步加載技術(shù)(AJAX)和需要用戶登錄才可以進(jìn)入相應(yīng)的頁(yè)面。所謂異步加載就是一種通過(guò)只和服務(wù)器交換少量的每頁(yè)不同的數(shù)據(jù)就可以實(shí)現(xiàn)頁(yè)面更新的技術(shù),而不是每次都需要重新加載整個(gè)頁(yè)面,這個(gè)可以更小的消耗服務(wù)器資源,也更高效快速。

        四、解析網(wǎng)頁(yè)數(shù)據(jù)

        當(dāng)我們獲取到網(wǎng)頁(yè)數(shù)據(jù)之后,接下來(lái)就是對(duì)此進(jìn)行解析并從中提取需要的數(shù)據(jù)。網(wǎng)站返回的數(shù)據(jù)格式有三種:HTML、XML、JSON,但是一般我們從網(wǎng)站上爬取到的從服務(wù)器中返回的是HTML格式的,有些從網(wǎng)站提供的API返回的數(shù)據(jù)格式是JSON,下面我們只針對(duì)HTML格式的數(shù)據(jù)進(jìn)行分析。

        要解析HTML格式的數(shù)據(jù),python中一般有三種方法,分別對(duì)應(yīng)三個(gè)庫(kù):BeautifulSoup庫(kù)、re庫(kù)、Lxml庫(kù)。BeautifulSoup庫(kù)可以很方便的解析Requests庫(kù)請(qǐng)求的網(wǎng)頁(yè),并把網(wǎng)頁(yè)源代碼解析為Soup對(duì)象,以便過(guò)濾提取數(shù)據(jù)。BeautifulSoup庫(kù)除了支持HTML,也支持XML。可以通過(guò)該庫(kù)中的find()、find_all()、selector()方法定位提取需要的數(shù)據(jù),其中的參數(shù)以及定位原則可以查看文檔。

        re庫(kù)是python中關(guān)于正則表達(dá)式的庫(kù),支持全部的正則表達(dá)式功能,可以利用該庫(kù)通過(guò)正則表達(dá)式來(lái)匹配提取HTML文檔中的數(shù)據(jù)。一般可以通過(guò)該庫(kù)中的search()、findall()函數(shù)來(lái)匹配提取。當(dāng)然關(guān)于正則表達(dá)式需要讀者額外的去學(xué)習(xí),雖然在學(xué)習(xí)上會(huì)比較靈活,但是同時(shí)其也是功能相對(duì)最強(qiáng)大和效率最高的方法之一。

        Lxml是XML解析庫(kù),但是對(duì)HTML也有很好的支持,該模塊使用c語(yǔ)言的python封裝,因此解析速度比BeautifulSoup快。Lxml庫(kù)使用Xpath語(yǔ)法解析定位網(wǎng)頁(yè)數(shù)據(jù),因此讀者需要自行學(xué)習(xí)Xpath語(yǔ)法以便知道如何定位提取數(shù)據(jù),學(xué)習(xí)難度不大,功能也強(qiáng)大。一般利用該庫(kù)中的etree模塊對(duì)網(wǎng)頁(yè)進(jìn)行解析,然后再利用解析后返回的對(duì)象中的xpath()方法結(jié)合Xpath語(yǔ)法提取需要的數(shù)據(jù)。

        這三種方法都可以實(shí)現(xiàn)對(duì)網(wǎng)頁(yè)數(shù)據(jù)的解析和提取,但是性能上有差異。一般的,正則表達(dá)式和Lxml庫(kù)的性能較高,但是正則表達(dá)式使用難度較大,Lxml一般是比較推薦的;BeautifulSoup庫(kù)的性能相對(duì)較低,但是使用起來(lái)簡(jiǎn)單,在爬取小規(guī)模數(shù)據(jù)時(shí)可以使用。

        五、數(shù)據(jù)處理和存儲(chǔ)

        數(shù)據(jù)處理其實(shí)沒(méi)啥多說(shuō)的,其本身內(nèi)容龐雜,即用即查,多用多學(xué),但python對(duì)數(shù)據(jù)處理是有先天優(yōu)勢(shì)的。數(shù)據(jù)存儲(chǔ)一般取決于數(shù)據(jù)量的大小,小規(guī)模的數(shù)據(jù)一般以csv的格式儲(chǔ)存,這可以利用python的第三方庫(kù)csv實(shí)現(xiàn),該庫(kù)的利用也比較簡(jiǎn)單。對(duì)于大規(guī)模的數(shù)據(jù),則一般儲(chǔ)存在數(shù)據(jù)庫(kù)里面,無(wú)論是關(guān)系型數(shù)據(jù)庫(kù)還是非關(guān)系型數(shù)據(jù)庫(kù),python對(duì)這兩者主流的數(shù)據(jù)庫(kù)都有第三方庫(kù)的支持。比如對(duì)于非關(guān)系型數(shù)據(jù)庫(kù)MongoDB,python有第三方庫(kù)pymongo;關(guān)系型數(shù)據(jù)庫(kù)MySQL,python有第三方庫(kù)pymysql。如果是將數(shù)據(jù)儲(chǔ)存在本地,則需要下載本地?cái)?shù)據(jù)庫(kù),最好也下載數(shù)據(jù)庫(kù)圖形管理界面方便查看;如果是遠(yuǎn)程數(shù)據(jù)庫(kù),則同樣的最好自己下載好圖形界面的數(shù)據(jù)庫(kù)管理器以便查看。

        六、基于Python網(wǎng)絡(luò)爬蟲(chóng)的實(shí)現(xiàn)通過(guò)實(shí)現(xiàn)任意貼吧的爬蟲(chóng),并將網(wǎng)頁(yè)保存到本地,來(lái)完成簡(jiǎn)單的網(wǎng)絡(luò)爬蟲(chóng)實(shí)現(xiàn)

        如何實(shí)現(xiàn)網(wǎng)頁(yè)的URL地址爬取,設(shè)計(jì)思想如下:(1)創(chuàng)建一個(gè)Spider類;(2)定義_init_(self,tieba_name)函數(shù),在函數(shù)中通過(guò)定義一個(gè)地址列表self.url_list[]、貼吧名稱變量self.tieba_name以及self.headers的初始化,使用循環(huán)語(yǔ)句來(lái)完成獲取完整的URL地址并追加到列表中;(3)定義parse_url(self,url)函數(shù),通過(guò)語(yǔ)句response=requests.get(urs,headers=self.headers)來(lái)專門發(fā)送請(qǐng)求,并獲取響應(yīng)。通過(guò)判斷發(fā)送請(qǐng)求,如果成功,返回responses的值,如果不成功,判斷是否為最后一頁(yè),如果是,返回“error”,否則返回“None”;(4)義save_html(self,html,page_num)函數(shù)來(lái)完成網(wǎng)址的保存。

        參考文獻(xiàn):

        [1]徐遠(yuǎn)超,劉江華,劉麗珍,等.基于Web的網(wǎng)絡(luò)爬蟲(chóng)的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2007,23(21):119-121.

        [2]郭麗蓉.基于Python的網(wǎng)絡(luò)爬蟲(chóng)程序設(shè)計(jì)[J].電子技術(shù)與軟件工程,2017(23):248-249.

        作者簡(jiǎn)介:

        高祖彥(1979-),男,漢族,副教授,恩施職業(yè)技術(shù)學(xué)院教務(wù)處,研究方向:計(jì)算機(jī)軟件技術(shù),計(jì)算機(jī)數(shù)據(jù)庫(kù)技術(shù)。

        猜你喜歡
        網(wǎng)絡(luò)爬蟲(chóng)設(shè)計(jì)與實(shí)現(xiàn)
        煉鐵廠鐵量網(wǎng)頁(yè)數(shù)據(jù)獲取系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
        校園電商平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)
        高校文化建設(shè)中視覺(jué)識(shí)別系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)
        軟件開(kāi)發(fā)信息管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
        科研院所科研信息化管理系統(tǒng)的設(shè)計(jì)與應(yīng)用
        基于社會(huì)網(wǎng)絡(luò)分析的權(quán)威網(wǎng)頁(yè)挖掘研究
        主題搜索引擎中網(wǎng)絡(luò)爬蟲(chóng)的實(shí)現(xiàn)研究
        淺析如何應(yīng)對(duì)網(wǎng)絡(luò)爬蟲(chóng)流量
        亚洲av熟女天堂久久天堂| 欧美变态口味重另类在线视频 | 狠狠人妻久久久久久综合蜜桃| 国产极品美女高潮抽搐免费网站| 成人国产永久福利看片| 久久综合九色综合久久久| 日日碰狠狠添天天爽超碰97久久| 精品国产乱码久久久久久1区2区| 国产精品无码片在线观看| 久久综合老鸭窝色综合久久| 久久精品中文少妇内射| 国产熟女露脸大叫高潮| 亚洲乱码一区二区三区在线观看 | 免费国产一级片内射老| 精品黑人一区二区三区久久hd | av天堂亚洲另类色图在线播放| 97人妻人人做人碰人人爽| 无套内谢孕妇毛片免费看看| 亚洲精品天堂在线观看| 国产av一级片在线观看| 2018国产精华国产精品| 国产精品短视频| 国产av精品久久一区二区| 强开小婷嫩苞又嫩又紧视频| a亚洲va欧美va国产综合| 最新国产美女一区二区三区| 国产极品大奶在线视频| 国产精品久久久国产盗摄| 9999精品视频| 亚洲中文字幕高清在线视频一区| 精品无码久久久久久久久| 日日噜噜夜夜爽爽| 中文无码制服丝袜人妻AV| 成人久久久精品乱码一区二区三区| 国产女人高潮叫床免费视频| 亚洲免费av电影一区二区三区| 人妻丰满精品一区二区| 中国无码人妻丰满熟妇啪啪软件| 真人男女做爰无遮挡免费视频| 亚洲黄色官网在线观看| 亚洲综合久久精品少妇av |