楊 雄
(西北民族大學,甘肅 蘭州 730000)
據人力資源和社會保障統計,每年高校畢業生高達數萬,勢必會造成巨大的就業壓力,能否找到心儀的工作還得靠自身的能力,不僅取決于是否具有畢業證和學位證,還取決于在校時獲得的其他證書及平時的各類成績。獲得相應的證書可以直觀地反應個人的能力大小,例如:獲得華為主辦的中國區大學生ICT大賽、國際計算機協會主辦的ACM國際大學生程序設計競賽、中國工業與應用數學學會舉辦的大學生數學建模比賽、武漢大學主辦的全國大學生化學實驗競賽等比賽的證書將會在面試時為學生帶來更大的信心。但是據調查顯示,很多人都不知道這些賽事的舉辦時間及內容等。通過Python網絡爬蟲技術將比賽信息抓取到MySQL數據庫中,可以方便用戶進行查詢及關注。
目前發現已經使用的與Python爬取比賽信息有關的系統或APP,具有如下特點:(1)以Python技術作為基礎進行開發,綜合應用了Python網絡函數庫。(2)以盈利為目的。(3)銷售有關比賽的書籍及課程。
通過問卷調查及走訪高校同學發現如下問題:(1)只知道四六級及計算機二級之類常規考試。(2)對將來找工作是否應該具有更多的證書概念模糊。(3)更多的同學對比賽的時間、地點等不清楚,更不知道怎么去復習。(4)找不到一起參加比賽的隊友,一個人不想參加比賽等。
對于上述問題,需研發一個系統來解決,這個系統具有以下的特點:(1)通過Python爬蟲技術抓取相關比賽信息。(2)實現抓取信息定制化。(3)實現信息查詢功能。(4)可以相互交流并尋找參賽隊友。
此系統實現爬取過程比較簡單,先明確初始網頁的統一資源定位符(URL),找到數據對應的網頁,分析網頁結構,找到數據所在標簽位置,模擬超文本傳輸協議(HTTP)請求,并向服務器發送這個請求,獲取到服務器返回的超文本標記語言(HTML),傳遞給數據解析模塊之后,將URL放進已經爬取的URL隊列中,數據解析模塊解析收到的HTML之后,通過正則表達式來處理所要爬取的具體內容,系統具體框架如圖1所示。

圖1 系統具體框架
所謂網絡爬蟲[1-2],就是一段自動抓取互聯網信息的程序,從互聯網上抓取有價值的信息,就像一張蜘蛛網,順著這張網爬行,每到一個網頁就用抓取程序將網頁抓下來,將內容抽取出來,同時抽取超鏈接,作為進一步爬行的線索。
Python爬蟲是按一定的規則自動爬取瀏覽器中信息的程序及腳本,也就是獲取Web頁面上自己想要的數據;爬蟲架構主要由5個部分組成,具體如下[3]:
(1)調度器。相當于電腦的中央處理器(CPU),主要負責調度URL管理器、下載器、解析器之間的協調工作。
(2)URL管理器。包括待爬取的URL地址和已爬取的URL地址,防止重復抓取URL,實現URL管理器主要有3種方式,通過內存、數據庫、緩存數據庫來實現。
(3)網頁下載器。通過傳入一個URL地址來下載網頁,將網頁轉換成一個字符,網頁下載器有urllib包括需要登錄、代理和cookier,requests。
(4)網頁解析器。將一個網頁字符串進行解析,可以按照用戶的要求來提取出有用的信息。
(5)應用程序。指從網頁中提取的有用數據組成的一個應用。
HTML不是一種編程語言,而是標識語言,用于創建網頁,使用標簽來描述網頁的。
瀏覽器/服務器(Brower/Server,B/S)模式統一了客戶端,將系統功能的核心部分集中到服務器上,簡化了系統的開發、維護和使用。
計算機二級是本科生階段最基礎的考試,為了能夠從大量信息中提取出有關于計算機二級的基本信息,本研究通過具體的代碼以及使用正則表達式來實現基本信息的抓取,供后期數據分析。
首先,在I E瀏覽器中輸入ht t ps://bai ke.so.com/doc/5309824-5544749.html,就會出現關于計算機二級的所有信息;其次,按“F12”鍵進入源代碼調試窗口,此窗口中有許多“div”標簽,標簽中的內容就是待抓取數據。使用正則表達式來篩選。
在進行數據抓取時,要先尋找標簽或標識符,選取所需標簽時要遵循3個原則:
(1)確定唯一能起決作用的標識。
(2)找最接近提取數據的標簽。
(3)選取閉合的標簽,進入源代碼調試窗口之后,左上角就會出現類似于小箭頭的按鈕(),鼠標點擊此箭頭。移動鼠標,當鼠標指向基本信息時,源代碼調試窗口就會顯示包含基本信息的代碼,接著就在Pycharm編譯器中編寫代碼(關鍵代碼:form urllib import request;class Spider();url=”…”;root_pattern=”…”;…)。當確定了“url”及“root_pattern”之后,能否提取到所有基本信息取決于在“root_pattern”的“div”標簽中靈活使用正則表達式,正則表達式中字符集包括“a.[d D],b.[w 單詞字符W],c.[s空白字符S]”等。使用“[s S]*”就可以抓取關于二級的基本信息,抓取結果如圖2所示。

圖2 抓取到的關于計算機二級的基本信息
當爬取數據量較小時,執行速度快;當數據量較大時,會出現卡頓情況,因為系統要為每個線程分配資源,同時,要具備較好的網速以及較強的硬件,才會提升爬取速率。
文章以對計算機二級的基本信息查詢為例,介紹了一種基于Python爬蟲的比賽信息查詢及交流系統的程序設計,面對所爬取對象,文章還存在一定的缺陷,有進一步的優化空間。例如:爬取數據較大時,速度會變慢,可以通過緩存或多線程技術優化爬蟲算法效率。文章Python爬蟲技術的實現為后續研究工作奠定了一定的基礎。