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