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

基于Python的網絡爬蟲的設計與實現

2020-07-23 16:35:17高祖彥
商情 2020年33期

【摘要】一個爬蟲從網上爬取數據的大致過程可以概括為:向特定的網站服務器發出請求,服務器返回請求的網頁數據,爬蟲程序收到服務器返回的網頁數據并加以解析提取,最后把提取出的數據進行處理和存儲。因此,一個爬蟲程序可以主要分為三大部分:向服務器請求并獲取網頁數據、解析網頁數據、數據處理和存儲。

【關鍵詞】Python;網絡爬蟲;設計與實現

一、引言

隨著網絡技術的飛速發展,互聯網中的信息呈現爆炸式的增長,互聯網的信息容量也達到了一個前所未有的高度。為了方便人們獲取互聯網中的信息,出現了一批搜索引擎。傳統的搜索引擎在返回的結果方面有局限性,網絡爬蟲因此而誕生。網絡爬蟲又名叫網絡機器人,它是一種按照特定規則爬取網頁信息的程序。與傳統搜索引擎不同,網絡爬蟲只爬取想要獲得的特定類型的信息,進而提高搜索引擎的效率。

二、Python語言

Python語言是一種比較常用的開發網址工具,這種語言自身具有非常強大功能。近些年,隨著互聯網行業的快速發展,各種行業自身都需要擁有自己的網址,這就給Phthon語言的應用提供了很大發展機會。Python語言能夠兼容各種不同類型的操作系統。站在網址開發的角度上分析來說Python是屬于面向對象語言,這種編程語言能夠在短時間內實現對象編程,Python屬于解釋性語言,整體通過簡單的語法與動態輸入有力支持,使得Python逐漸成為各種操作系統平臺上常用的腳本語言之一,特別是那些追求高性能的綜合應用程序開發過程中Python語言占有重要地位。

三、獲取網頁數據

在Python中,一般爬蟲主要是通過一個python的第三方庫requests來實現這個過程的,requests庫提供了兩種發起請求的方法,分別為get()何post(),這也是大部分網站都會實現的兩個接口。一般地,get()方法直接通過url參數(有時候還需要請求頭參數)便可以發起有效請求;post()方法除此之外還需要一些額外的表單參數,才可以發起有效請求。

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

四、解析網頁數據

當我們獲取到網頁數據之后,接下來就是對此進行解析并從中提取需要的數據。網站返回的數據格式有三種:HTML、XML、JSON,但是一般我們從網站上爬取到的從服務器中返回的是HTML格式的,有些從網站提供的API返回的數據格式是JSON,下面我們只針對HTML格式的數據進行分析。

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

re庫是python中關于正則表達式的庫,支持全部的正則表達式功能,可以利用該庫通過正則表達式來匹配提取HTML文檔中的數據。一般可以通過該庫中的search()、findall()函數來匹配提取。當然關于正則表達式需要讀者額外的去學習,雖然在學習上會比較靈活,但是同時其也是功能相對最強大和效率最高的方法之一。

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

這三種方法都可以實現對網頁數據的解析和提取,但是性能上有差異。一般的,正則表達式和Lxml庫的性能較高,但是正則表達式使用難度較大,Lxml一般是比較推薦的;BeautifulSoup庫的性能相對較低,但是使用起來簡單,在爬取小規模數據時可以使用。

五、數據處理和存儲

數據處理其實沒啥多說的,其本身內容龐雜,即用即查,多用多學,但python對數據處理是有先天優勢的。數據存儲一般取決于數據量的大小,小規模的數據一般以csv的格式儲存,這可以利用python的第三方庫csv實現,該庫的利用也比較簡單。對于大規模的數據,則一般儲存在數據庫里面,無論是關系型數據庫還是非關系型數據庫,python對這兩者主流的數據庫都有第三方庫的支持。比如對于非關系型數據庫MongoDB,python有第三方庫pymongo;關系型數據庫MySQL,python有第三方庫pymysql。如果是將數據儲存在本地,則需要下載本地數據庫,最好也下載數據庫圖形管理界面方便查看;如果是遠程數據庫,則同樣的最好自己下載好圖形界面的數據庫管理器以便查看。

六、基于Python網絡爬蟲的實現通過實現任意貼吧的爬蟲,并將網頁保存到本地,來完成簡單的網絡爬蟲實現

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

參考文獻:

[1]徐遠超,劉江華,劉麗珍,等.基于Web的網絡爬蟲的設計與實現[J].微計算機信息,2007,23(21):119-121.

[2]郭麗蓉.基于Python的網絡爬蟲程序設計[J].電子技術與軟件工程,2017(23):248-249.

作者簡介:

高祖彥(1979-),男,漢族,副教授,恩施職業技術學院教務處,研究方向:計算機軟件技術,計算機數據庫技術。

主站蜘蛛池模板: 沈阳少妇高潮在线| 国产精品高清国产三级囯产AV| 日韩欧美国产成人| 911亚洲精品| 久久精品视频一| 国产成人亚洲毛片| 中文无码日韩精品| 伊人婷婷色香五月综合缴缴情| 无码电影在线观看| 久夜色精品国产噜噜| 天堂成人在线| 草草影院国产第一页| 欧美精品亚洲精品日韩专区va| 72种姿势欧美久久久大黄蕉| 国产产在线精品亚洲aavv| 国产91小视频| 久久免费视频播放| 人妻出轨无码中文一区二区| 一级毛片免费高清视频| 精品一区二区三区波多野结衣 | 国产精品3p视频| 制服丝袜亚洲| 国产成人免费高清AⅤ| 国产成人av一区二区三区| 日韩无码视频播放| 久久精品丝袜| 日本日韩欧美| 婷婷六月激情综合一区| 欧美日本在线| www精品久久| 成年人久久黄色网站| 人妻无码AⅤ中文字| 国产在线自乱拍播放| 特级毛片免费视频| 青青草a国产免费观看| 亚洲综合婷婷激情| 精品欧美日韩国产日漫一区不卡| 精品国产自在在线在线观看| 波多野吉衣一区二区三区av| 中文字幕日韩视频欧美一区| 精品国产免费观看| 亚洲中文字幕无码mv| www亚洲精品| 国产成+人+综合+亚洲欧美| 成人91在线| 免费毛片视频| 国产三级成人| 香蕉久人久人青草青草| 99视频在线看| 国产91熟女高潮一区二区| 国产精品19p| 精品国产美女福到在线不卡f| 尤物午夜福利视频| 黄色免费在线网址| 毛片基地美国正在播放亚洲| 亚洲综合久久成人AV| 99热这里只有精品久久免费| 国产噜噜在线视频观看| 亚洲无码电影| 成人韩免费网站| 亚欧成人无码AV在线播放| 日韩一区二区三免费高清| 毛片在线播放网址| 精品人妻系列无码专区久久| 国产乱人免费视频| 国产在线视频福利资源站| 青青草原国产精品啪啪视频| 中文字幕无码电影| 亚洲女同一区二区| 亚洲中文字幕23页在线| 99精品国产电影| 色偷偷av男人的天堂不卡| 国产欧美另类| 国产精品无码作爱| 亚洲系列无码专区偷窥无码| 国产精品偷伦视频免费观看国产| 四虎国产成人免费观看| 九九热这里只有国产精品| 色综合五月婷婷| 欧美黄网在线| 亚洲av日韩av制服丝袜| 天天摸夜夜操|