亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        全國高職專業(yè)點數(shù)據(jù)爬蟲的設(shè)計與實現(xiàn)

        2021-07-31 07:38:46鄧子云
        南方職業(yè)教育學(xué)刊 2021年1期
        關(guān)鍵詞:數(shù)據(jù)項爬蟲中間件

        鄧子云

        (長沙商貿(mào)旅游職業(yè)技術(shù)學(xué)院 湘商學(xué)院,湖南 長沙 410116)

        為能用大數(shù)據(jù)技術(shù)分析全國高等職業(yè)教育(以下簡稱“高職”)專業(yè)點布局的規(guī)律與存在的問題,需要先獲得全國高職專業(yè)點的設(shè)置數(shù)據(jù)。在全國職業(yè)院校專業(yè)設(shè)置管理與公共信息服務(wù)平臺(http://zyyxzy.moe.edu.cn)中,已經(jīng)收集了全國高職專業(yè)點設(shè)置的數(shù)據(jù)和專業(yè)名錄,該平臺中的數(shù)據(jù)面向互聯(lián)網(wǎng)公開。因此,可以設(shè)計出一種爬蟲來爬取這些數(shù)據(jù)。

        一、爬蟲的架構(gòu)設(shè)計

        爬蟲的架構(gòu)設(shè)計包括功能架構(gòu)和技術(shù)架構(gòu)兩個部分[1]。目前關(guān)于爬蟲的設(shè)計已有成熟穩(wěn)定的框架系統(tǒng),因此沒有必要再從技術(shù)底層開始全面開發(fā)爬蟲[2]。可供選擇的爬蟲框架系統(tǒng)有基于Java語言的Crawler4j[3]、基于Python語言的Scrapy[4]??紤]到后續(xù)作大數(shù)據(jù)處理仍然采用Python語言,且Python語言開發(fā)簡便、快捷,因此選用Scrapy作為爬蟲開發(fā)的框架[5]。

        (一)功能架構(gòu)

        從功能需求出發(fā),結(jié)合Scrapy框架,應(yīng)當(dāng)實現(xiàn)如圖1所示的功能:1.需要爬取專業(yè)設(shè)置點的數(shù)據(jù);2.需要爬取專業(yè)名錄數(shù)據(jù);3.需要對爬行過程中的異常作出處理;4.為應(yīng)對反爬蟲系統(tǒng)需要作爬蟲偽裝;5.將爬取的數(shù)據(jù)存儲到數(shù)據(jù)庫中;6.設(shè)計并實現(xiàn)高職專業(yè)數(shù)據(jù)庫系統(tǒng)。

        圖1 爬蟲的功能架構(gòu)

        (二)技術(shù)架構(gòu)

        爬蟲在爬取網(wǎng)站(http://zyyxzy.moe.edu.cn)的頁面數(shù)據(jù)后,用XPath表達(dá)式[6]從網(wǎng)頁中提取到專業(yè)點和專業(yè)名錄數(shù)據(jù),填充到數(shù)據(jù)項SpecialitiesItem和數(shù)據(jù)項SpecialitiyDictItem中,這兩個數(shù)據(jù)項分別表示專業(yè)點和專業(yè)名錄。再通過項目管道SpecialityDataPipeline將數(shù)據(jù)項中的數(shù)據(jù)存儲到數(shù)據(jù)庫的表中。

        從技術(shù)架構(gòu)來看,Scrapy核心引擎、調(diào)度器、下載器、爬蟲的爬行功能在技術(shù)上不需要再行開發(fā)[7],利用Scrapy框架中已有的功能模塊即可。結(jié)合爬蟲的功能架構(gòu)和技術(shù)架構(gòu),還應(yīng)在技術(shù)上實現(xiàn)以下技術(shù)模塊(見圖2):

        圖2 爬蟲的技術(shù)框架

        1.高職專業(yè)數(shù)據(jù)庫

        設(shè)計Specialities表、SpecialitiyDict表等的ER(Entity Relation)關(guān)系,并用SQL(Structed Query Language)語句完成表創(chuàng)建、記錄插入、記錄修改、記錄刪除等操作。數(shù)據(jù)庫采用了SQL Server 2017。

        2.項目管道

        項目管道(SpecialityData Pipline)用于封裝對數(shù)據(jù)庫的操作,在其中要設(shè)計并實現(xiàn)設(shè)置數(shù)據(jù)庫的連接參數(shù)、用連接池獲得數(shù)據(jù)連接、釋放數(shù)據(jù)庫連接、執(zhí)行SQL語句等功能[8]。

        3.數(shù)據(jù)項

        數(shù)據(jù)項(SpecialitiesItem和SpecialityDictItem)用于封裝由爬取到的數(shù)據(jù)構(gòu)成的數(shù)據(jù)結(jié)構(gòu),常用一個數(shù)據(jù)項來對應(yīng)數(shù)據(jù)庫中的一個表。

        4.網(wǎng)站爬蟲

        通過設(shè)定爬蟲(CrawlPages Spider)的爬取方向,可分別爬取專業(yè)設(shè)置點和專業(yè)名錄數(shù)據(jù)。

        5.異常處理中間件

        中間件(ExceptMiddeware)對Scrapy框架捕獲到的各種異常進(jìn)行處理[9]。

        6.偽裝中間件

        中間件(AgentMiddeware)將爬蟲偽裝成各種瀏覽器爬取數(shù)據(jù)。

        7.Scrapy配置

        對Scrapy框架進(jìn)行配置,主要配置項包括數(shù)據(jù)庫連接參數(shù)、異常處理中間件的類等[10]。

        二、數(shù)據(jù)庫設(shè)計與實現(xiàn)

        從前述分析來看,關(guān)鍵的兩個數(shù)據(jù)表是專業(yè)點設(shè)置表、專業(yè)名錄表,再看這些表中哪些數(shù)據(jù)可以作分類或用數(shù)值代替字符串,以降低存儲并提升數(shù)據(jù)的范式。為此,設(shè)計ER圖如圖3所示。

        (一)ER圖

        從圖3可以看出,數(shù)據(jù)庫中設(shè)計了6個表,表與表之間存在依賴關(guān)系。專業(yè)點表中記錄了編號、專業(yè)點設(shè)置的省份代碼,以及設(shè)置專業(yè)點的學(xué)校的代碼、專業(yè)代碼、專業(yè)學(xué)習(xí)年限、專業(yè)點備案年份等字段。專業(yè)點表通過專業(yè)代碼與專業(yè)名錄表關(guān)聯(lián),通過設(shè)置專業(yè)點的省份代碼與省份表關(guān)聯(lián),通過設(shè)置專業(yè)點的學(xué)校的代碼與學(xué)校表關(guān)聯(lián)。

        圖3 ER圖

        專業(yè)名錄表中的專業(yè)代碼可以拆分成大類、二級類和二級類中的專業(yè)編號,該表中還有專業(yè)名稱和開設(shè)年份字段。因此通過專業(yè)代碼可以關(guān)聯(lián)專業(yè)大類表、專業(yè)二級類表,一個專業(yè)二級類又屬于某一個專業(yè)大類。

        (二)表及其字段

        根據(jù)圖3所示的設(shè)計思路,可設(shè)計出SQL Server 2017中的表,如表1所示。

        表1 SQL Server 2017中表的實現(xiàn)

        續(xù)表

        三、爬蟲的設(shè)計與實現(xiàn)

        根據(jù)前述技術(shù)架構(gòu)的設(shè)計,爬蟲還需要設(shè)計與實現(xiàn)項目管道、數(shù)據(jù)項、網(wǎng)站爬蟲、異常處理中間件、偽裝中間件,并對這些技術(shù)模塊作出配置。

        (一)項目管道

        在項目管理中可使用twisted.enterprise的adbapi模塊[11]來作數(shù)據(jù)庫的建立連接、關(guān)閉連接操作,以及執(zhí)行SQL語句(包括插入、增加、刪除、修改)操作。

        應(yīng)在啟動爬蟲時建立數(shù)據(jù)庫連接池,代碼如下:

        應(yīng)在關(guān)閉爬蟲時關(guān)閉數(shù)據(jù)庫連接池,代碼如下:

        應(yīng)在項目管道收到數(shù)據(jù)項后,即可調(diào)用執(zhí)行插入數(shù)據(jù)庫數(shù)據(jù)的代碼:

        (二)數(shù)據(jù)項

        數(shù)據(jù)項封裝了從網(wǎng)頁中爬取的數(shù)據(jù),并可用于通過項目管道操作數(shù)據(jù)庫中的數(shù)據(jù)[13]。為簡化起見,只需要設(shè)計實現(xiàn)2個數(shù)據(jù)項即可,即數(shù)據(jù)項SpecialitiesItem和數(shù)據(jù)項SpecialitiyDictItem。這兩個數(shù)據(jù)項的代碼如下:

        (三)網(wǎng)站爬蟲

        為了爬取網(wǎng)站中的數(shù)據(jù),需要專門設(shè)計一個爬蟲類。這個爬蟲類中的代碼相對其他技術(shù)模塊的代碼較為復(fù)雜。

        要爬取專業(yè)點的設(shè)置數(shù)據(jù),可分析其網(wǎng)址(http://zyyxzy.moe.edu.cn/mspMajorRegisterActi on.fo?method=index&startcount=100),如圖4所示。

        圖4 要爬取數(shù)據(jù)的頁面

        在網(wǎng)址中通過startcount參數(shù)表示當(dāng)前頁的專業(yè)點數(shù)據(jù)的起始號,每頁顯示100條專業(yè)點數(shù)據(jù)。但還有年份參數(shù)是通過表單提交的。因此不僅要在網(wǎng)址中帶入每頁數(shù)據(jù)的起始號,還需要生成一個表單,在表單中設(shè)置專業(yè)備案的年份。

        爬取2016—2020年專業(yè)點數(shù)據(jù)的代碼如下:

        在返回數(shù)據(jù)項后,Scrapy框架會自動通過項目管道向數(shù)據(jù)庫中作數(shù)據(jù)操作。

        要爬取專業(yè)名錄的數(shù)據(jù),相對爬取專業(yè)點的設(shè)置更為簡單。

        在專業(yè)名錄網(wǎng)址(http://zyyxzy.moe.edu.cn/msp MajorGzAction.fo?method=list&startcount=100)中通過startcount參數(shù)表示當(dāng)前頁的專業(yè)點數(shù)據(jù)的起始號,每頁顯示100條專業(yè)點數(shù)據(jù)。專業(yè)名錄的網(wǎng)頁無需用表單來提交數(shù)據(jù),也不需要傳入年份參數(shù)??紤]相對較為簡單,不再贅述和重復(fù)列出爬取專業(yè)名錄數(shù)據(jù)的源代碼。

        (四)異常處理中間件

        爬取處理中間件的作用是及時捕獲異常并報錯,但并不中止爬蟲的運行。要處理的異常如下:

        (五)偽裝中間件

        比較簡單的實現(xiàn)偽裝中間件的做法是用一個集合列出所有準(zhǔn)備偽裝的瀏覽器的名稱:

        然后再隨機的選擇其中的一個瀏覽器名稱,放入到請示頁面時的頭部中:

        四、爬取效果

        使用爬蟲爬取到了全國職業(yè)院校專業(yè)設(shè)置管理與公共信息服務(wù)平臺中2016—2020年的專業(yè)點設(shè)置數(shù)據(jù)和專業(yè)名錄數(shù)據(jù),其中專業(yè)點設(shè)置數(shù)據(jù)如圖5所示,總共爬取到275,873條專業(yè)點設(shè)置數(shù)據(jù)和770條專業(yè)名錄數(shù)據(jù)。

        圖5 全國專業(yè)點的數(shù)量和增長率

        以爬取的數(shù)據(jù)為基礎(chǔ),可以進(jìn)一步開展全國專業(yè)點布局的大數(shù)據(jù)分析。下面給出兩個分析示例。

        (一)全國專業(yè)點布局

        可根據(jù)爬取到的各省設(shè)置專業(yè)點的數(shù)量情況得出布局的一些明顯規(guī)律。其中,2020年全國形成了“三核一X”的形態(tài),即三個專業(yè)點核心圈為四川、廣東、四省(江蘇、安徽、山東、河南),一個“X”形狀的隔離帶把三個核心圈隔離開來。

        (二)專業(yè)點集中度

        經(jīng)大數(shù)據(jù)分析發(fā)現(xiàn)專業(yè)點數(shù)高度集中。排名前50名的專業(yè)的專業(yè)點數(shù)占所有專業(yè)的專業(yè)點總數(shù)的比例在2020年為50.97%,其中排名前10名的專業(yè)如表2所示。在2020年總共有779個專業(yè),前50名的專業(yè)的專業(yè)點數(shù)就超過了一半,6.42%的專業(yè)的專業(yè)點數(shù)占了所有專業(yè)點總數(shù)的50.97%。

        表2 2020年點數(shù)排名前10名的專業(yè)

        2020年,在779個專業(yè)中,全國有216個專業(yè)的專業(yè)點數(shù)低于或等于5個,這216個專業(yè)中有41個專業(yè)已沒有專業(yè)點,41個專業(yè)的專業(yè)點數(shù)僅1個,33個專業(yè)的專業(yè)點數(shù)僅2個。

        五、結(jié)語

        從全國高職專業(yè)點設(shè)置數(shù)據(jù)爬蟲的設(shè)計與實現(xiàn)來看,使用Scrapy框架研發(fā)的爬蟲系統(tǒng)代碼簡潔,不需要再行開發(fā)下載網(wǎng)頁、下載調(diào)度等方面的功能,可以讓研發(fā)人員有更多的精力專注于業(yè)務(wù)相關(guān)的代碼的研發(fā)。該爬蟲在功能架構(gòu)上有6個功能模塊的需求,在技術(shù)架構(gòu)上實現(xiàn)了7個技術(shù)模塊,在數(shù)據(jù)庫中用6個表來存儲數(shù)據(jù),設(shè)計與實現(xiàn)了項目管道、數(shù)據(jù)項、網(wǎng)站爬蟲、異常處理中間件、偽裝中間件等技術(shù)模塊。該爬蟲總共爬取了275,873條專業(yè)點設(shè)置數(shù)據(jù)和770條專業(yè)名錄數(shù)據(jù),用來作全國專業(yè)點布局的大數(shù)據(jù)分析。

        猜你喜歡
        數(shù)據(jù)項爬蟲中間件
        利用網(wǎng)絡(luò)爬蟲技術(shù)驗證房地產(chǎn)灰犀牛之說
        基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究
        一種多功能抽簽選擇器軟件系統(tǒng)設(shè)計與實現(xiàn)
        甘肅科技(2020年19期)2020-03-11 09:42:42
        非完整數(shù)據(jù)庫Skyline-join查詢*
        基于Python的Asterix Cat 021數(shù)據(jù)格式解析分析與實現(xiàn)
        RFID中間件技術(shù)及其應(yīng)用研究
        電子制作(2018年14期)2018-08-21 01:38:10
        基于VanConnect中間件的設(shè)計與開發(fā)
        電子測試(2018年10期)2018-06-26 05:54:02
        利用爬蟲技術(shù)的Geo-Gnutel la VANET流量采集
        電子測試(2018年1期)2018-04-18 11:53:04
        大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)
        電子制作(2017年9期)2017-04-17 03:00:46
        中間件在高速公路領(lǐng)域的應(yīng)用
        亚洲激情一区二区三区不卡| 亚洲 国产 哟| 激情人妻网址| 日韩av一区二区三区精品久久| 国产精品白浆在线观看免费| 一本之道高清无码视频| 欧美精品久久久久久三级| 成人自拍三级在线观看| 国产精品 无码专区| 亚洲中文字幕无码mv| 国产成社区在线视频观看| 亚洲av熟女少妇一区二区三区 | 日本a级片免费网站观看| 亚洲国产av精品一区二区蜜芽| 国产福利免费看| 日韩精品一区二区三区四区五区六| 亚洲av乱码二区三区涩涩屋| 国产精品人妻一码二码| 波多野结衣视频网址| 日本高清一区二区在线观看| 日本视频一区二区三区一| 丰满人妻被黑人猛烈进入| 国产成人亚洲综合无码DVD| 国产自拍精品在线视频| 97久久国产亚洲精品超碰热| 老头巨大挺进莹莹的体内免费视频| 天天澡天天揉揉AV无码人妻斩| 日本不卡一区二区三区久久精品| 亚洲av成人噜噜无码网站 | 成人亚洲欧美久久久久| 人妻中文字幕在线一二区| 天堂国产一区二区三区| 66lu国产在线观看| 久久伊人精品只有这里有| 91露脸半推半就老熟妇| 欧美猛男军警gay自慰| 91精品综合久久久久m3u8 | 四虎国产精品永久在线国在线| 国产美女在线精品亚洲二区| 日本精品av中文字幕| 国产无套粉嫩白浆在线|