陳星 宣震



摘要:2019粵教版信息技術必修1結合《5.2數據的采集》《5.4數據的可視化分析》的內容,采用Python編寫網絡爬蟲與數據可視化工具的案例,并使用程序與人行為的類比逐步深入任務,通過探究學習方式讓學生體驗爬蟲獲取網頁數據的完整流程,對文本數據可視化分析并得出結論,培養(yǎng)了學生的計算思維,讓學生體會到數據保護的意義,提升了學生社會責任感。
關鍵詞:Python爬蟲;數據采集與可視化分析;學科教學
中圖分類號:G434? 文獻標識碼:A? 論文編號:1674-2117(2020)17-0000-00
伴隨著移動互聯網、物聯網技術的迅猛發(fā)展,數據挖掘與分析已經成為重要的研究領域。因此,《普通高中信息技術課程標準(2017年版)》在“數據處理可視化表達”這一內容下突出數據處理的基本原理,聚焦技術性工具在數據處理中的功能,強調讓學生通過典型案例應用,了解數據采集、分析和可視化表達的基本方法。[1]那如何通過典型案例了解數據獲取與可視化分析的過程呢。筆者從任務分解的視角,有層次地引導學生自主探索數據采集與可視化分析的實際應用。
設計思路與任務闡明
建構主義認為,學習環(huán)境中的情境必須有利于學習者對所學內容的意義建構,且學習能在和現實情況基本一致或相類似的情境中發(fā)生。[2]同時,宅還強調學生的學習活動應與任務或問題相結合,以探索問題或完成任務的方式來引導和維持學習興趣和動機,使學生完成主動的意義建構。
例如,筆者創(chuàng)設了這樣一個真實的情境:假如你是一名導演,你導演的電影上映了一段時間,關于這部作品,你會關注哪些方面?向學生展示豆瓣網頁中電影《我和我的祖國》短評以及利用爬蟲獲取的短評文本分析生成關鍵詞的詞云圖、柱狀圖、餅圖、雷達圖、圈圖(如上頁圖1),提問:“大家能從圖中獲取哪些信息?”由此讓學生初步了解數據獲取與分析的作用,并闡明利用Python編寫爬蟲程序獲取豆瓣電影短評文本數據、進行數據分析展示并得出結論的主要學習任務。
任務知識儲備與分組
通過前期的學生學情分析和教學內容分析可知,本次教學內容難度較大,學生需要熟悉Python基礎語法知識、HTML基礎知識以及Python IDLE操作環(huán)境。學生兩人為一組,分工合作完成此次學習內容。
任務分析
教師提出應如何利用計算機程序自動獲取豆瓣電影短評數據并進行分析,以圖表的形式呈現分析結果,引導學生將這一過程分解為五個子過程,并針引導學生思考怎樣完成這五個過程,形成實施過程和人的動作的對比,使得學生能夠形象地理解數據獲取的基本過程(如表1)。由此進一步引導學生思考計算機程序如何獲取數據的問題。
任務驅動的學習探索
1.環(huán)節(jié)一:Python爬蟲基礎新知
學生觀看視頻了解爬蟲的新知。網絡爬蟲通常可以分為兩類:通用爬蟲和聚焦爬蟲。通用爬蟲是根據關鍵詞爬取整個互聯網的程序,常見的有谷歌、百度搜索引擎爬蟲,而本次所用的Python爬蟲是一種聚焦爬蟲,是定向抓取與某一特定主題內容相關的網頁資源的程序。
2.環(huán)節(jié)二:程序行為的形象化
由任務分析中五個過程與人的動作的對比再次深入,引導學生認知計算機程序是如何完成這個五個過程的(如表2)。
3.環(huán)節(jié)三:python爬蟲基礎庫準備
爬蟲是如何完成鏈接的訪問和網頁數據分析的呢?針對這一問題,教師講授python爬蟲程序實踐需要具備兩個“利器”:Requests庫和BeautifulSoup庫。
Requests是公認的非常好的Python第三方爬蟲庫,利用它可以很方便地爬取一個網頁。BeautifulSoup庫是靈活又方便的網頁解析庫,處理效率高,利用它不用編寫正則表達式即可方便地實現網頁信息的提取,而結合Requests和BeautifulSoup庫可以實現只抓取需要的網頁信息。獲得一個網頁最簡單的方法就是利用requests.get(url),requests.get(url)構造一個向服務器請求資源的Requests對象。r=requests.get(url),即返回的內容用一個變量r來表示,這個r是Response對象,包含從服務器返回的所有相關資源。
4.環(huán)節(jié)四:任務過程的程序實現
(1)過程1:鏈接訪問
程序實現的過程1,需要利用requests.get()方法獲取某一部電影短評頁面的網頁資源。學生利用IDLE打開spider_gethtml.py,只需補全小組探究的具體豆瓣電影短評頁面的url鏈接并運行(代碼過程如表3)。在此過程中小組可以獲取到某一部電影的短評頁面資源,短評文本數據就在其中。
(2)過程2:網頁分析
網頁分析需要利用BeautifulSoup庫對獲取到的網頁資源進行分析,定位豆瓣電影短評數據所在的標簽位置。
首先,創(chuàng)建beautifulsoup對象soup:
html = r.text
soup = BeautifulSoup(html,"html.parser")? #解析取的html代碼
接著,利用find_all()方法查找短評內容所在的標簽列表
分析網頁源代碼可知,短評內容位于class=”short”的標簽中,結合css選擇器可以直接定位并選取出短評內容,避免了學生理解xpath路徑選擇的困難,這也是筆者在前期備課和后期磨課中結合學生的反饋做出的調整,任務實踐中學生對這一知識點的反饋良好。學生打開spider_get_shortcomments.py,補全find_all中的內容以獲取短評文本(如表4)。
(3)過程3:文本數據的保存
學生運行spider_savecsv.py將電影短評第一頁的20條短評數據存short_comments.csv文件中。保存數據的代碼不需要學生掌握,但要求了解其作用是將爬蟲抓取到的數據以csv格式(類似表格形式)進行存儲的(代碼過程如表5)。
(4)過程4和5:數據分析與展示
學生利用提供的餅圖、詞云圖、雷達圖、圈圖、柱狀圖五個Python文件,生成數據分析展示圖,從中任意選擇兩個,完成學案中“電影短評數據分析”的內容(如表6)。
數據分析展示圖生成的代碼是利用Jieba庫對數據進行分析,再利用matplotlib庫對分析結果進行展示,因其代碼對于高一學生來說較為復雜且不是本次教學目標內容,所以將可直接運行的代碼給學生使用。重點在于培養(yǎng)學生根據具體數據靈活分析展示數據的能力。
5.環(huán)節(jié)五:任務階段性小結
前一階段主要介紹了網絡爬蟲的分類包括:通用爬蟲和聚焦爬蟲,并利用Python聚焦爬蟲進行了網頁數據的爬取,分析表達的一般過程。作者將此過程和人手動獲取分析數據的行為類比為五個過程:①爬取整個網頁的HTML;②解析HTML;③定位提取數據并保存數據;④分析數據;⑤圖表展示。而這五個過程可以概況為兩個部分:數據獲取和數據可視化表達(如圖2)。
6.環(huán)節(jié)六:任務優(yōu)化
在上一階段只獲取了20條電影短評數據,筆者引導學生發(fā)現數據量的不足,并不能完全展現出觀眾評價的問題,所以下一階段的優(yōu)化目標就是爬取更多的評價(220條)讓分析更加完善。
(1)程序行為的再次形象化
再次利用人與程序行為形象的對比(如表7),引導學生理解循環(huán)程序在實際問題中的運用并 思考利用程序循環(huán)爬取11頁的數據。接著,引導學生分析每一頁的url,找出url變化規(guī)律為:每一電影在豆瓣電影網站中都有唯一的subjectID,只要將其在url中替換即可,每一頁變化的數值是“頁數*20”,這樣就構造了循環(huán)url。打開spider_savecsv_220n.py,替換url鏈接中subjectID,運行程序循環(huán)獲取電影短評11頁的文本數據(如表8)。
(2)數據再分析
針對200多條評論,學生再次利用提供的五個Python文件生成數據分析展示圖,從中任意選擇兩個,完成學案中優(yōu)化單元中“數據再分析展示的方式圖”表格內容。這個環(huán)節(jié)中,當全班學生同時對豆瓣電影的服務器進行爬取數據的請求時,出現了IP地址被禁止訪問的情況即反爬蟲現象,針對這個預先有準備的情況,筆者及時調整了講授內容順序,將網絡爬蟲所可能引起的問題提前拋出,學生觀看爬蟲與網絡安全的視頻。筆者認為在實際操作中遇到反爬蟲問題,可以讓學生更深刻地認識到爬蟲世界的“盜亦有道”,讓學生了解在利用爬蟲時,要遵守一定的規(guī)則,認識到不合理使用爬蟲帶來的危害。經過兩個階段任務后,學生完成學案中“影評再分析總結”和“差異比較”(如表9)。
延伸思考
在完成兩個階段的任務后,引導學生思考數據獲取中還有哪些方面可以完善。問題1:只爬取了前220條的短評數據,數據量依舊少,數據分析依然不夠準確。問題2:爬取的數據中會存在許多無關的數據,并提示如何進行完善改進。針對問題1,可以利用爬蟲進行模擬登錄,爬取所有電影短評數據。針對問題2,需要對數據進行清洗,去除無效數據,如可以使用停止詞或者利用Python提供的NumPy、Pandas、SciPy等數據科學擴展庫進行數據處理。
階段性小結:你認識到數據量的大小對分析評價的影響是什么?數據本身的“質量”是否會對分析結果造成影響?怎樣解決?經過本節(jié)課的學習和實踐,你認識到的網絡爬蟲會帶來哪些問題?
拓展學習
向學生展示一個“南京二手房”分析報告再次明確問題分析的一般過程。請學生選擇一個自己感興趣的問題,結合本節(jié)課內容,課后進行探究(拓展學習表如表10)。
任務驅動學習的策略
(1)任務的設置要有目的性,圍繞真實情境完成知識建構
教師根據生活場景的實效性,圍繞一個真實的情境設計學習任務。本節(jié)課以學生為主體,從一個導演的角度探究觀眾對電影的評價,情境的設置具有一定的真實性,并用《我和我的祖國》作為案例,增強了學生的愛國主義情懷,讓學生能夠在具有真實目的性的情境中完成有意義的知識建構。
(2)任務的難度要有層次性,符合認知的規(guī)律
任務的難度設置要循序漸進,關鍵就在于要將每個過程細化并且能夠讓學生易于理解,逐步完成每一個小任務,依次擴展完善,最終完成整個任務。本次案例將任務分為兩個階段。在第一個階段中,將“人獲取數據的動作”和“程序的行為”進行了類比并將任務分解為五個過程,讓學生理解利用python爬蟲獲取網頁數據的完整流程。在第二個階段中,設置了“怎么獲得更精準的評價”的問題,引導學生思考如何利用程序的優(yōu)勢循環(huán)獲取大量數據,培養(yǎng)學生自我探究和計算思維能力。前后兩個階段的任務具有遞進關系,并且將真實的問題融入循環(huán)程序教學知識點中,不僅讓任務難度有層次性,而且也符合學生的認知發(fā)展規(guī)律。
(3)任務要具有啟發(fā)性,促進學生自主學習能力
完成任務不是最終目的,真正有價值的任務是要給學生以啟發(fā)。結構主義教學論提出者布魯納認為,要使學生理解和掌握學科的基本結構,領會基本的原理和概念,要有利于知識的遷移和運用,使其達到舉一反三、觸類旁通的境地。[3]本次案例的最終目的是讓學生能夠了解數據獲取和可視化表達的基本方法,并能在學習和生活中遷移運用,所以在課后的拓展學習中也要求學生找一個感興趣的問題,結合本節(jié)課知識框架去自主探索,在培養(yǎng)學生自主學習能力的同時,也讓他們在解決學習、生活問題的過程中提升了社會責任意識。
結語
現代教育家杜威提出的學生中心、活動中心、經驗中心的三中心理論,強調“從做中學”,學生能在自身的活動中進行學習,開始他的自然發(fā)展進程,只有通過富有成效和創(chuàng)造性的活動,才能獲得和牢固地掌握有價值的知識。[4]以真實情境為切入點,以任務解決為抓手的教學,能夠使學生積極地參與到學習中來,主動探索,在任務解決的過程中不斷自我構建知識體系,實現學科核心素養(yǎng)的提升。同時,教師通過對教學內容的打磨設計,不僅加深了對課標內涵的理解,提升了專業(yè)素養(yǎng),而且為學科教學提供了良好的案例。
參考文獻:
[1]任友群,黃榮懷.普通高中信息技術課程標準(2017年版)解讀[M].北京:高等教育出版社,2018:59.
[2]殷常鴻,張義兵,王晴燕.運用知識建構圈促進學生課堂深度互動研究[J].中國電化教育,2020(02):102-108.
[3]余文森.布魯納結構主義教學理論評析[J].外國教育研究,1992(03):13-16.
[4]劉廣利,湯慧麗.杜威的“從做中學”教學理論及對我國基礎教育的啟示[J].繼續(xù)教育研究,2008(05):84-86.
作者簡介:陳星,南京市第十三中學教師;宣震,中學高級教師,南京市玄武高級中學教師,研究方向為信息技術教學。
基金項目:本文為南京市教育科學“十三五”規(guī)劃2016年度課題“基于智慧校園的高中學生STEM項目學習及成效評估研究”階段性成果,課題批準號:L/2016/083。