牛紅霞 鮑玉薇
摘要:隨著2019年在全國(guó)各高職高專院校開始招收“虛擬現(xiàn)實(shí)應(yīng)用技術(shù)”專業(yè)學(xué)生,Python作為專業(yè)基礎(chǔ)課程在本專業(yè)的課程中占有很大的比重,結(jié)合Python語(yǔ)言和高職高專學(xué)生的特點(diǎn),設(shè)計(jì)教學(xué)過(guò)程旨在如何將較難理解的數(shù)據(jù)爬取的內(nèi)容轉(zhuǎn)變成相對(duì)簡(jiǎn)單的內(nèi)容,更容易使學(xué)生掌握。
關(guān)鍵詞:高職高專;Python;教學(xué);數(shù)據(jù)爬取
課堂教學(xué)主要采用項(xiàng)目教學(xué)法,結(jié)合任務(wù)驅(qū)動(dòng)法和現(xiàn)場(chǎng)教學(xué)法等教學(xué)方法,設(shè)置的訓(xùn)練任務(wù)為:爬取石家莊信息工程職業(yè)學(xué)院(以下簡(jiǎn)稱“信工”)校園網(wǎng)新聞,主要學(xué)習(xí)的內(nèi)容為:BeautifulSoup和requests庫(kù),以及相應(yīng)的方法。
課堂教學(xué)具體過(guò)程如下:一段時(shí)間以來(lái),全國(guó)各地都在開展“不忘初心,牢記使命”的主題教育,教師在課上會(huì)要求學(xué)生在信工校園網(wǎng)、石家莊任意其它兩所專科院校、石家莊所有職技類院校甚至于河北省所有的學(xué)校的校園新聞中看看有多少條包含“不忘初心”的新聞,讓學(xué)生對(duì)比幾次搜索關(guān)鍵字所需要的時(shí)間,設(shè)置有什么辦法可以滿足這樣的需求的問(wèn)題,從而引出本節(jié)課要講的技術(shù)---爬蟲。
首先,讓學(xué)生學(xué)習(xí)什么是爬蟲?爬蟲定義的關(guān)鍵字就是規(guī)則、自動(dòng)和程序。爬蟲的功能很強(qiáng)大,爬蟲可以爬取新聞、圖片、視頻、金融公開信息和用戶公開信息;爬蟲節(jié)省了人工操作,提高了收集數(shù)據(jù)的效率。
習(xí)大大教育我們要“不忘初心,牢記使命”,所以此次的項(xiàng)目任務(wù)就是:爬取信工校園網(wǎng)“校園新聞”中包含“不忘初心”關(guān)鍵字的新聞鏈接和標(biāo)題;實(shí)現(xiàn)爬蟲需要4步,分別是1.設(shè)定爬取目標(biāo),2.分析目標(biāo)網(wǎng)頁(yè),3.獲取網(wǎng)頁(yè),4.解析網(wǎng)頁(yè),獲得數(shù)據(jù)。獲取數(shù)據(jù)的程序部分只要熟練掌握二個(gè)方法:第一個(gè)方法:對(duì)象.get_text()方法,用來(lái)提取對(duì)象中的文本;比如soup.get_text(),link.get_text();第二個(gè)方法:對(duì)象.find_all(標(biāo)簽),用來(lái)提取滿足要求的所有數(shù)據(jù),比如find_all("a"),從網(wǎng)頁(yè)中提取所有標(biāo)簽為“a”數(shù)據(jù),其中“a”是源代碼標(biāo)簽。要實(shí)現(xiàn)獲取數(shù)據(jù)的前提是要搞清校園新聞的網(wǎng)頁(yè)源代碼,通過(guò)觀察發(fā)現(xiàn),所有的新聞都有一個(gè)共性,就是每條新聞的源代碼的標(biāo)簽為a,href是它的鏈接,這是文本。
準(zhǔn)備工作做好之后,來(lái)學(xué)習(xí)獲取數(shù)據(jù)的步驟。獲取數(shù)據(jù)的四步:1.判斷每頁(yè)中是否包含“不忘初心”2.找到該頁(yè)中所有的新聞,3.判斷每條新聞是否包含“不忘初心”4.輸出。每一步使用指令實(shí)現(xiàn)就是1.if“不忘初心”in soup.get_text():2.links=soup.find_all(“a”)3.if“不忘初心”in link.get_text():4.print(link["href"],link.get_text()),再加一條行遍歷來(lái)掃描所有新聞,這樣就完美了。
我們來(lái)逐條講解一下,第一條指令中if 為判斷語(yǔ)句,in,a in b 返回真或者假,soup.get_text()獲取的是soup對(duì)象里面的文本,soup對(duì)象里是網(wǎng)頁(yè)的源代碼,所以這條語(yǔ)句的實(shí)現(xiàn)的功能就是判斷“不忘初心”是否在網(wǎng)頁(yè)源代碼的文本中,假就跳過(guò),若為真執(zhí)行第二條指令,第二條指令是在soup對(duì)象中或者說(shuō)在網(wǎng)頁(yè)源代碼的中找到所有標(biāo)簽為a的新聞,將它賦值于對(duì)象links;第三條指令for link in links,for是遍歷循環(huán)語(yǔ)句,links是所有新聞,link是單條新聞,其作用就是掃描每條新聞,第四條語(yǔ)句,又是if判斷和in語(yǔ)句,link.get_text()獲取的是link里的文本。這條語(yǔ)句的實(shí)現(xiàn)就是在判斷“不忘初心”是否在每條新聞的文本中,假為跳過(guò),假的話打印,打印的內(nèi)容,link中的href,href是鏈接,和link.get_text()即每條新聞的文本。因?yàn)榉椒ㄊ谦@取數(shù)據(jù)的關(guān)鍵,也是本次課的重點(diǎn)。程序?qū)崿F(xiàn)比較抽象并且指令多,所以是本次課的難點(diǎn)。
雖然學(xué)生在實(shí)際操作中大多數(shù)執(zhí)行出結(jié)果,成功得爬取了校園網(wǎng)包含“不忘初心”新聞內(nèi)容,但是操作中經(jīng)常出錯(cuò)的有以下兩點(diǎn):1.單詞拼寫2.對(duì)象位置;學(xué)生會(huì)出錯(cuò),說(shuō)明對(duì)知識(shí)點(diǎn)還不熟悉,還需要加強(qiáng)學(xué)生這兩點(diǎn)的練習(xí)。
同時(shí),也要給學(xué)生強(qiáng)調(diào)爬取個(gè)人隱私信息是違法的,并不是網(wǎng)絡(luò)上所有的信息都可以爬取,這就是大數(shù)據(jù)安全,否則,就會(huì)違法甚至犯罪,大數(shù)據(jù)是把“雙刃劍”,數(shù)據(jù)不能亂爬,這是作為爬蟲工程師最基本的道德規(guī)范和職業(yè)要求,同時(shí),也要保護(hù)好個(gè)人隱私信息,不讓不法之徒有可乘之機(jī)。所謂有矛就有盾,網(wǎng)上的信息不能隨意爬取,但其實(shí)也并不是所有的網(wǎng)頁(yè)都讓爬取的,這就是反爬蟲,理解反爬蟲技術(shù)可以更好地做爬蟲,可以安排學(xué)生課下學(xué)習(xí)反爬蟲的一些相關(guān)知識(shí)。
在準(zhǔn)備Python的數(shù)據(jù)爬取課程中,因?yàn)樽约耗芰τ邢蓿龔V泛查閱資料之外,特別感謝與我院合作企業(yè)東軟王光磊老師的大力支持。
參考文獻(xiàn):
[1]嵩天 ?Python語(yǔ)言程序設(shè)計(jì)基礎(chǔ)(第二版)高等教育出版社 ?2017.2
[2]翁正紅 Python語(yǔ)言及其應(yīng)用 ?電子工業(yè)出版社 2018.8
[3]芒努斯·利·海特蘭德 ?Python基礎(chǔ)教程 人民郵電出社 2018.2
作者簡(jiǎn)介:牛紅霞(1979-1)女,漢族,河北省石家莊市人,本科,助教,從事計(jì)算機(jī)應(yīng)用技術(shù)研究。
鮑玉薇(1981-11)女,漢族,河北省石家莊市人,本科,助教,從事虛擬現(xiàn)實(shí)技術(shù)研究。