前言:尋找寫作靈感?中文期刊網用心挑選的網絡爬蟲技術主流編程語言分析,希望能為您的閱讀和創作帶來靈感,歡迎大家閱讀并分享。
摘要:每隔一段時間,國外多個專業網站會對編程語言進行排名,但這并不能反應國內市場對掌握不同編程語言技術人才的需求度。采用Python常用第三方庫requests來爬取招聘網站信息,再通過pyecharts庫生成數據圖表,從而形象直觀地看到我國不同城市間對主流編程語言職位熱度。
1編程語言排名
國際上的編程語言排行榜,比較有代表性有TIOBE和IEEESpectrum網站。TIOBE網站每月更新一次排名,主要依據全球資深軟件工程師和IT相關企業提供的數據。IEEESpectrum雖一年一次,但提供多維度的參數供用戶篩選,從而得到不同編程語言的世界排名[1]。兩個站點反映的是國際軟件行業對不同編程語言的熱門程度,但并不能反映國內的實際情況。通過爬取國內知名人才網站的招聘信息,來獲取近期各大城市對不同編程語言職位需求數量及相關數據。國內招聘網站眾多,由于網頁結構不同,因此爬取的規則也不同。選取拉鉤網站為例,利用Python提供的第三方庫requests爬取該網站的招聘信息并存入MySQL數據庫。再通過pyecharts庫生成編程語言在這些城市IT職位的排名數據圖表。
2網絡爬蟲設計
2.1requests庫。requests是基于Python開發的HTTP庫。與urllib標準庫相比,它不僅使用方便,而且能節約大量的工作。實際上,requests是在urllib的基礎上進行了高度的封裝,而且還支持一些其他的特性。例如,使用Cookie保持會話、自動確定響應內容的編碼等,可以輕而易舉地完成瀏覽器的爬取相關操作[2-3]。requests庫中提供了如下常用的類:(1)requests.Request:表示請求對象,用于將一個請求發送到服務器。(2)requests.Response:表示響應對象,包含服務器對HTTP請求的響應。(3)requests.Session:表示請求會話,提供Cookie持久性、連接池和配置。requests類不僅能夠重復地讀取返回的數據,而且還能自動確定相應內容的編碼。因為無須轉換為URL路徑編碼格式來拼接成完整的URL路徑等優點,所以可以極大程度的減少程序的代碼量[3]。
2.2爬取過程。招聘數據是本次爬取的核心內容。parse方法利用requests庫的相關方法從網站后臺接口獲取JSON數據,并篩選需要的招聘信息。關鍵代碼如下。為了防止某些網站的反爬蟲機制,這里采用了偽造請求頭的方式去處理這個問題。添加特定的頭信息Us-er-Agent(瀏覽器標識)與Referer(來源地址),使url請求更加貼近人工操作。通過變量formData配合for循環,動態獲取30頁的數據。其中requests.Session表示請求會話,提供Cookie持久性、連接池和配置。調用save自定義函數,將獲取到的招聘信息,包括用人單位提供職位、薪資、要求學歷、公司規模和地址等信息,存入MySQL數據庫。
2.3生成數據圖表。通過show()方法引入pyecharts模塊,該模塊簡單的幾行代碼就可以將數據轉成數據圖,而且還是動態的。在本項目中,筆者安裝了jupyter和pyechartsV1.0.0模塊。在jupyter上直接調用實例,從數據庫提取相關信息生成可視化的圖表。方便用戶更直觀地查看。核心方法如下。由于篇幅限制,只選取7天內國內4個一線城市的5種編程語言職位信息,依次進行遍歷爬取。一種語言在每個城市搜尋30個分類頁,每頁為15條數據,生成圖1和表1。可以大致了解到編程語言在這些城市中的需求度。
3結語
通過以上方法,讀者可以自行設置城市和編程語言的條件,找到編程語言職位在這些城市招聘信息受關注的程度。從而可以大致了解該區域對不同程序人才的需求度。通過對Python第三方庫requests的分析和使用,完成了簡單的網頁爬取,對于Python強大的數據爬取功能將會在后期的文章中進行介紹。
參考文獻
[1]白青海.基于大數據分析的計算機語言使用頻度研究[J].內蒙古民族大學學報(自然科學版),2019,(11):485-488.
[2]馮成.面向崗位信息的分布式爬蟲應用[J].無線互聯科技,2020,(6):36-37.
[3]蔡振海,張靜.基于Python的網絡爬蟲系統的設計與實現[J].電腦知識與技術,2019,(8):36-37.
作者:劉楊 單位:中山市技師學院