蔡振海 張靜
摘要:隨著大數(shù)據(jù)和人工智能的火熱,編程語(yǔ)言Python的熱度也迅速攀升,在各大編程語(yǔ)言排行榜中位居榜首。越來(lái)越多的人想了解和學(xué)習(xí)Python語(yǔ)言。該文從Python的安裝,常用庫(kù)(Requests)的安裝、使用,網(wǎng)頁(yè)爬蟲(chóng)通用代碼框架的構(gòu)造來(lái)介紹Python的特點(diǎn)。使感興趣者更加容易了解和使用Python。
關(guān)鍵詞:Python;網(wǎng)頁(yè)爬蟲(chóng)
中圖分類號(hào):TP393? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)23-0036-02
開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
Design and Implementation of a Web Crawler System Based on Python
CAI Zhen-hai1, ZHANG Jing2
(1.Jiangsu Vocational Institute of Commerce, Nanjing 211100,China; 2. Nanjing Technical Vocational College, Nanjing 211100, China)
Abstract:With the popularity of big data and artificial intelligence, the programming language Python is also rapidly rising, ranking first in the list of major programming languages. More and more people want to know and learn Python. This paper introduces the characteristics of Python from the installation of Python, the installation and use of common libraries (Requests), and the construction of common code framework for web crawlers.Making it easier for interested people to understand and use Python.
Key words: Python; Web crawler
近年來(lái),Python語(yǔ)言迅速崛起,其簡(jiǎn)潔、免費(fèi)、易學(xué)習(xí)、兼容性好等特點(diǎn)以及其面向?qū)ο蟆⒑瘮?shù)式編程、過(guò)程編程、面向方面編程,受到眾人的喜愛(ài)【1】。Python是一種廣泛使用的腳本語(yǔ)言,它自身帶有requests等爬蟲(chóng)的基礎(chǔ)庫(kù),尤其是Python在人工智能領(lǐng)域的優(yōu)勢(shì),使得其戰(zhàn)略地位迅速提升【2】。教育部公布的《2019年教育信息化和網(wǎng)絡(luò)安全工作要點(diǎn)》透露:今年將啟動(dòng)中小學(xué)生信息素養(yǎng)測(cè)評(píng),并推動(dòng)在中小學(xué)階段設(shè)置人工智能相關(guān)課程,逐步推廣編程教育,也將編制《中國(guó)智能教育發(fā)展方案》。了解、學(xué)習(xí)、使用Python語(yǔ)言是成為相關(guān)領(lǐng)域人才的必經(jīng)之路。
1 網(wǎng)頁(yè)爬蟲(chóng)的設(shè)計(jì)
網(wǎng)頁(yè)爬蟲(chóng)通過(guò)一定的規(guī)則自動(dòng)從眾多的網(wǎng)絡(luò)資源中爬取所需信息,它通過(guò)模仿瀏覽器對(duì)網(wǎng)頁(yè)的URL地址訪問(wèn)的方式,不需要人工操作即可獲得所需數(shù)據(jù)【3】。通過(guò)安裝相關(guān)軟裝和庫(kù),即可實(shí)現(xiàn)簡(jiǎn)單的網(wǎng)頁(yè)爬蟲(chóng)功能。
1.1 Python的安裝
目前Python的版本已經(jīng)更新到3.X,登錄Python官網(wǎng),根據(jù)操作系統(tǒng)選擇相應(yīng)的版本下載。本文以3.7.2版本為例在Windows操作系統(tǒng)上進(jìn)行介紹。下載后執(zhí)行Python安裝可執(zhí)行文件,選擇安裝目錄,同時(shí)一定要記住在安裝界面勾選Add Python 3.7.2 to PATH選項(xiàng),否則在使用時(shí)會(huì)報(bào)錯(cuò)。
安裝成功后,打開(kāi)命令提示符窗口,輸入Python后回車,當(dāng)界面顯示Python版本號(hào),則表明Python安裝成功。
1.2 requests的安裝
為了爬取網(wǎng)頁(yè)內(nèi)容,需要安裝requests庫(kù)。以管理員身份運(yùn)行命令提示符窗口,輸入PiP install requests后回車,系統(tǒng)會(huì)執(zhí)行安裝requests庫(kù)操作,當(dāng)出現(xiàn)Successfully installed requests-2.21.0時(shí),表示requests庫(kù)安裝成功。在使用時(shí),需要輸入import requests引入該庫(kù)。
1.3 網(wǎng)頁(yè)的爬取
安裝好Python和requests庫(kù)后,就可以實(shí)現(xiàn)簡(jiǎn)單的網(wǎng)頁(yè)爬取功能。本文主要使用requests庫(kù)中的一個(gè)非常重要的get()方法。該方法能構(gòu)造一個(gè)向服務(wù)器請(qǐng)求資源的Request對(duì)象,并將響應(yīng)對(duì)象返回,該對(duì)象是ResPonse類型。我們可以通過(guò)響應(yīng)的對(duì)象所攜帶的數(shù)值來(lái)判斷請(qǐng)求是否成功,若值為200,則表明請(qǐng)求成功,否則表示失敗,當(dāng)然也能通過(guò)返回的具體的數(shù)值來(lái)判斷失敗的原因。在使用get()方法時(shí),需要向其傳遞參數(shù),最重要的就是URL參數(shù),即:所要爬取的網(wǎng)頁(yè)的鏈接。該方法還有其他可選參數(shù),可根據(jù)實(shí)際情況進(jìn)行選擇。
若要顯示所爬取網(wǎng)頁(yè)的信息,需要用到ResPonse的text屬性,該屬性是HTTP響應(yīng)內(nèi)容的字符串形式,即:get()方法中傳入的參數(shù)URL所對(duì)應(yīng)的頁(yè)面。在進(jìn)行網(wǎng)絡(luò)連接時(shí),通常會(huì)出現(xiàn)異常,通過(guò)raise_for_status()進(jìn)行異常處理。同時(shí)為了正確顯示網(wǎng)頁(yè)內(nèi)容,還需對(duì)網(wǎng)頁(yè)編碼進(jìn)行修改,以免發(fā)生亂碼情況。網(wǎng)頁(yè)爬取的偽代碼如下:
1 導(dǎo)庫(kù),將需要使用的requests庫(kù)引入
2 確定需要爬取的網(wǎng)頁(yè)URL
3 requests.get(URL)——>Result? ?//將爬取的對(duì)象返回
4 異常處理
5 utf-8——Result.encoding? ? ?//采用utf-8編碼,避免出現(xiàn)亂碼
6 打印網(wǎng)頁(yè)內(nèi)容
1.4 網(wǎng)頁(yè)爬蟲(chóng)的具體實(shí)現(xiàn)
首先定義帶參的頁(yè)面爬取函數(shù),該函數(shù)通過(guò)requests庫(kù)的get()函數(shù)爬取所需頁(yè)面內(nèi)容,同時(shí)在該函數(shù)中做了異常處理,防止程序出現(xiàn)意外情況。并將編碼方式設(shè)為可輸出中午形式的utf-8形式。其次主函數(shù)中將結(jié)果進(jìn)行打印輸出。具體代碼和如結(jié)果如下圖所示:
2 結(jié)束語(yǔ)
本文通過(guò)對(duì)Python及requests庫(kù)的安裝和使用完成了簡(jiǎn)單網(wǎng)頁(yè)的爬取功能的實(shí)現(xiàn),通過(guò)對(duì)實(shí)際頁(yè)面爬取的操作,加深了對(duì)Python的理解,提升了學(xué)習(xí)Python的興趣。本文只是簡(jiǎn)單的實(shí)現(xiàn)了頁(yè)面的爬取,對(duì)于Python強(qiáng)大的數(shù)據(jù)爬取功能將會(huì)在后期的文章中進(jìn)行詳細(xì)介紹。
參考文獻(xiàn):
[1] 仇明. 基于Python的圖片爬蟲(chóng)的程序設(shè)計(jì)[J]. 工業(yè)技術(shù)與職業(yè)教育, 2019(3).
[2] 賈棋然. 基于Python專用型網(wǎng)絡(luò)爬蟲(chóng)的設(shè)計(jì)及實(shí)現(xiàn)[J]. 電腦知識(shí)與技術(shù), 2017(12).
[3] 李琳. 基于Python的網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 信息通信, 2017(9).
【通聯(lián)編輯:唐一東】