?

基于Python的中國大學MOOC網站爬蟲系統設計與實現

2021-04-14 08:20鄒興宇
課程教育研究 2021年30期
關鍵詞:爬蟲職業教育

【摘要】當今已進入大數據時代,網絡爬蟲成為數據獲取的有效手段,獲得廣泛應用。但在教育領域,尤其是職業教育領域的相關應用較少。隨著國家職教改革各項政策的逐步落實,職業教育目前正處于快速發展期,職業教育課程資源建設也顯得尤為重要。本文參考Python的Scrapy爬蟲框架,利用Selenium模擬瀏覽器執行網頁操作,最終設計出一個簡潔、實用的爬蟲系統。對中國大學MOOC網站進行相關課程信息的爬取和分析。通過數據分析,了解職業教育線上課程資源建設情況,對未來職業教育慕課、精品課程建設提出建議。同時,本文提供了爬蟲系統在教育領域應用的成功經驗。

【關鍵詞】Python? 爬蟲? Selenium? MOOC? 職業教育

【基金項目】福建省教育廳中青年教師教育科研項目(科技類)“基于Scrapy框架的網絡爬蟲系統的設計及其在教育領域的應用”(項目編號:JAT191700)。

【中圖分類號】TP393.092;TP391.3? 【文獻標識碼】A 【文章編號】2095-3089(2021)30-0077-02

一、Python及爬蟲介紹

(一)網絡爬蟲

網絡爬蟲(Web crawler),也稱為網絡機器人(bot)。其是一種可以實現網頁數據抓取的自動化程序,通過多種手段收集網絡數據的方式,不光是通過與API交互或者直接與瀏覽器交互的方式。最常用的方法是寫一個自動化程序向網絡服務器請求數據,然后對數據進行解析,提取需要的信息。[1]網絡爬蟲的思維模式就是模擬瀏覽器向服務器發出請求,接收到請求數據后再進行解析。一般而言,基礎爬蟲的兩大請求庫urllib和requests。但是,目前越來越多的網站頁面是經過JavaScript渲染的,當requests在抓取頁面時,得到的結果和在瀏覽器中看到的將不一樣。為解決以上問題,本文選擇Selenium實現爬蟲,它是一個自動化測試工具,利用它可以驅動瀏覽器執行特定的動作,如點擊、下拉等操作,同時還可以獲取瀏覽器當前呈現的頁面的源代碼,做到可見即可爬。[2]

(二)Python語言

隨著大數據、人工智能等領域的快速發展和廣泛應用,Python語言的優勢凸顯,變得比以往更加流行。在2021年7月的語言排行榜單升至第三位,近年來與C、Java、C++一起穩居前四。從編程語言的市場份額可以看出,一定時期內使用Python語言的人數越來越多。在爬蟲領域,因其語言簡單易懂、支持多平臺、擁有優秀的網絡爬蟲庫等優勢,成為絕大部分網絡爬蟲設計的首選,可以說是網絡爬蟲領域的第一編程語言。

二、爬蟲具體設計及實現

(一)爬取流程

Scrapy是一個為了爬取網站數據,提取結構性數據而編寫的應用框架。其架構清晰,模塊之間的耦合程度低,可擴展性極強,可以靈活完成各種需求。Scrapy吸引人的地方在于它是一個框架,任何人都可以根據需求方便的修改。它也提供了多種類型爬蟲的基類,如BaseSpider、sitemap爬蟲等。[2]

基于對Scrapy爬蟲框架的學習和研究,本文自主設計了一個更加實用和簡潔的爬蟲流程。該設計利用Selenium抓取中國大學MOOC網站課程數據,并解析出課程的名稱、評級、開課學校、課程介紹等信息,并保存為Json和txt文件形式。本爬蟲系統的自動化工作流程如圖1所示,分為三個階段:進入檢索頁面、爬取數據、存儲數據。首先,在進入檢索頁面階段,利用Selenium依次完成初始化瀏覽器驅動、打開網頁、進入指定關鍵詞“電子技術”相關課程檢索頁。另外,經實際測試及性能分析,這里選用Firefox瀏覽器。其次,在爬取數據階段,依次要完成檢索結果列表頁信息、列表頁中每個課程的詳情頁相關信息、進入檢索結果的下一頁面等動作。周而復始,直到爬取完檢索到的全部課程信息。最后,進入存儲數據階段,為了便于數據分析,將課程名稱、課程評級、課設學校信息保存為Json格式;對于課程簡介數據量大,保存為txt格式。

(二)爬蟲程序設計

1.初始化。根據本設計采用的爬蟲技術及數據存儲方式,導入以下庫及函數。例如:webdriber用于初始化瀏覽器;WebDriverWait用于設置瀏覽器響應等待最長時間;json用于將數據存儲為Json格式。同時,完成相關參數的初始化。例如:logging.basicConnfig完成日志的配置;INDEX_URL完成網址初始值設置。

2.檢索結果首頁面的加載及跳轉。爬取網頁的初始地址為“https://www.icourse163.org/search.htm?search=電子技術#type=30&orderBy=0&pageIndex={page}&courseTagType=null”,經分析發現檢索結果的每一頁地址的page參數呈現1、2、3…累加規律。同時,考慮到爬蟲過程受到網絡情況的影響,設置頁面加載最長等待時間及超時報錯。但是,經實際測試MOOC網站發現,通過更新page參數獲得新地址,無法實現頁面的跳轉。所以調整策略為通過Selenium模擬點擊“下一頁”按鈕實現頁面跳轉。

同時,在檢索結果的每一頁,進行數據的初步解析,爬取當前頁檢索課程名稱、課程評級等信息。

3.爬取每一門課程的詳情頁。進入每一門課的詳情頁后,分析網頁源碼,利用CSS選擇器定位到“課程描述”。爬取后關閉詳情頁,再重新定位回當前的檢索結果列表頁。然后,重新進入新課程的詳情頁爬取數據。如圖2所示,在分析檢索結果及HTML代碼時發現,部分檢索結果并非常規課程,可能是講座、考試輔導等等,如何識別這部分的檢索結果和避免其對爬蟲數據的影響呢?本文在代碼設計時,因此類非常規課程未提供“課程描述”部分,所以利用這一點,在代碼中加入try-except模塊進行處理,成功達到目的。

4.數據存儲。本設計通過構建字典的形式存儲信息,其中將課程名稱、課程評級(國家精品或職業教育課程)存儲為JSON格式、課程描述存儲為txt格式。具體實施步驟為數據提取、數據存儲。

5.問題解決。(1)爬取策略過濾了培訓、講座等非課程的信息,保證了數據的有效性;(2)有效規避了網站的反爬限制,保證了爬蟲的順利進行;(3)實現模擬網頁操作、數據抓取、存儲、數據分析的全流程。

三、實驗分析

本文在中國大學MOOC慕課網站,檢索指定關鍵詞“電子技術”相關課程信息。利用網絡爬蟲對檢索的全部課程信息進行數據抓取。如圖3所示,檢索相關課程共624門,其中國家精品課程為342門,占相關課程的54.8%;獲得職業教育課程認定的僅為30門,占相關課程4.8%。數據表明,普通高等教育的慕課資源建設已非常成熟,擁有一大批優質課程。但是,針對職業教育的課程資源嚴重偏少。且絕大部分是高職課程,中職慕課資源更加匱乏。

新時代國家大力推動職業教育的發展,職業教育已經成為和普通教育同等地位的類型教育,未來將在服務國家產業和經濟發展方面提供有力支撐。按照國家政策,中等職業技術學校入學人數增加,高職近幾年也在不斷擴招,接收職業教育的人數將越來越多。所以打造和豐富相關職業教育的學習資源,必須提上議程,以適應新時代的發展需求。同時,國家推動一師一優課,一課一名師。作為職業教育的教師,應努力踐行三教改革,打造精品課程、開發出更多的優質教學資源。

四、總結

綜上所述,本文設計了一個簡潔、實用的基于Selen?

ium技術的爬蟲系統,實現對中國大學MOOC網站課程信息的有效爬取。通過數據分析發現職業教育的優質慕課資源相對偏少,僅占到整個調研數據的14%,尤其是中職的更加匱乏,通過此研究結果凸顯了職業教育慕課資源建設的緊迫性。最終,本文的研究成果拓展了網絡爬蟲在教育領域的應用,一定程度上促進了爬蟲技術的發展和職業教育課程資源建設。

參考文獻:

[1]瑞安·米切爾.Python網絡爬蟲權威指南[M].北京:人民郵電出版社,2020:56-57.

[2]劉宇,鄭成煥.基于Scrapy的深層網絡爬蟲研究[J].軟件,2017,38(7):32-33.

作者簡介:

鄒興宇(1984年-),男,漢族,黑龍江綏化人,講師,碩士研究生,研究方向為物聯網、人工智能。

猜你喜歡
爬蟲職業教育
利用網絡爬蟲技術驗證房地產灰犀牛之說
基于Python的網絡爬蟲和反爬蟲技術研究
利用爬蟲技術的Geo-Gnutel la VANET流量采集
大數據環境下基于python的網絡爬蟲技術
“動能教育”模式下的工匠人才培養路徑研究
論七年一貫制體系下本科學科建設中職業教育的重要性
芻議職業教育校企合作的有效性
翻轉課堂教學模式在《PLC應用技術》課程教學中的應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合