2、延時設置和分頁爬取
避免爬取速度過快被封,設置延時時間為 3-5 秒。通過 for 循環進行分頁數據的爬取。
def main(pages,city,job):
for n in range(1, pages+1):
get_lagou(n,city,job)
time.sleep(round(random.uniform(3, 5), 2))
write_to_csv(city,job)
![爬取拉勾網數據發現 Python薪資已高至 50K!|技術頭條](http://p2.ttnews.xyz/loading.gif)
數據存儲與處理
1、CSV 數據存儲
由於數據量不大,最多 450 條數據,採用 CSV 的存儲方式。
2、數據處理
- 薪酬數據處理
後續統計月薪的佔比,由於薪酬範圍是可以自定義範圍,沒有一個統一的標準。例如薪酬可以是 10k-20k、5k-8k、11k-18k、10k-16k 等情況,後續不利於薪酬範圍的可視化,所以將薪酬歸納分類到這幾種:2k 以下、2k-5k、5k-10k、10k-15k、15k-25k、25k-50k、50k 以上。
假如薪酬為 10k-20k, 則認為在 10k-15k、15k-25k 這兩種歸類裡面都包含。採用正則表達式進行歸類彙總:
def salary_categorize(salarys):
dict = {'2k以下': 0, '2k-5k': 0, '5k-10k': 0,'10k-15k':0,'15k-25k':0,'25k-50k':0,'50k以上':0}
for salary in salarys:
if re.match('^[0-1]k-*|.*-[0-1]k$',salary)!=None:
dict['2k以下'] += 1
if re.match('^[2-4]k-*|.*-[2-4]k$',salary)!=None:
dict['2k-5k'] += 1
if re.match('^[5-9]k-*|.*-[5-9]k$', salary)!=None:
dict['5k-10k'] += 1
if re.match('^1[0-4]k-*|.*-1[0-4]k$', salary)!=None:
dict['10k-15k'] += 1
if re.match('^1[5-9]k-*|^2[0-4]k-*|.*-1[5-9]k$|.*-2[0-4]k$', salary)!=None:
dict['15k-25k'] += 1
if re.match('^2[5-9]k-*|^[3-4][0-9]k-*|.*-2[5-9]k$|.*-[3-4][0-9]k$', salary)!=None:
dict['25k-50k'] += 1
if re.match('^[5-9][0-9]k-*|.*-[5-9][0-9]k$|^\d{3,}k-*|.*-\d{3,}k$', salary)!=None:
dict['50k以上'] += 1
return dict
- 行業信息處理
公司所屬行業可以是多個,一般以逗號分隔,但存在部分是以頓號和空格分隔的情況,還有可能存在沒有寫明相關行業的情況。對此,通過 Python 的 re 庫可以處理多個分隔符分隔的數據,所屬行業為空,則跳過。
![爬取拉勾網數據發現 Python薪資已高至 50K!|技術頭條](http://p2.ttnews.xyz/loading.gif)
def industryField_counts(csv_file):
industryFields = []
d = pd.read_csv(csv_file, engine='python', encoding='utf-8')
info = d['industryField']
for i in range(len(info)):
try:
data = re.split('[,、 ]',info[i])
except:
continue
for j in range(len(data)):
industryFields.append(data[j])
counts = Counter(industryFields)
return counts
數據可視化與解讀
1、公司相關情況分析
從行業情況和公司規模來看,移動互聯網佔有 40% 的需求,數據服務+大數據+人工智能佔了 10% 的比例。Python 非常強大,適合的領域包括 Web 開發、網絡編程、爬蟲、雲計算、人工智能、自動化運維等,所以不管公司規模是大還是小,融資情況如何,都普遍需要 Python 相關的職位的人才。
2、城市需求分析
從上圖分析,可以發現,需求量主要集中在中國三大經濟圈:京津冀,長三角,珠三角。主要分佈在北京(40%)、上海(16%)、深圳(15%)、廣州(6%)、成都(6%)和杭州(6%)這 6 個城市。而北京的互聯網創業氣氛冠絕中國,註冊在北京的互聯網公司遠遠高於在其他城市的公司,需求量也是最大的。
3、薪酬與工作經驗分析
從工作經驗的要求來看,大部分集中在 3-5 年和 1-3 年這兩個區間,至於工作經驗和薪酬之間的相關性,觀察發現,1-3 年工作經驗的薪酬普遍在 15-25K,符合正態分佈的規律,3-5 年工作經驗的薪酬普遍在 15k-25k 和 25k-50k 這兩個區間,以 15k-25k 這個區間的居多。達到 5-10 年工作經驗的,薪酬在 25k-50K 這個區間的居多。
4、學歷要求和工作經驗分析
從學歷要求來看,大部分都要求至少本科以上,這部分佔了約 80% 的比例。所以不要在相信讀書無用論這種觀點了,學歷至少是工作的敲門磚。
工作經驗上,普遍要求是 1-5 年,這部分佔了 84% 的比例。1年以下和經驗不限的,佔了約 9%,5-10 年的佔了約 7% 的比例。
總結
TIOBE 8 月編程語言指數排行榜已經公佈了,排名前三的雖然依舊是 Java、C、C++。但 Python 非常接近 TIOBE 索引的前 3 位。Python 這樣的上漲趨勢,同樣可以在 TIOBE 索引排行中體現,互聯網業界也開始普遍採用 Python。Python 編程語言最初是 Perl 的繼承者,用於編寫構建腳本和各種粘合軟件。但後來逐漸進入其他領域。如今,在大型嵌入式系統中運行 Python 是很常見的。因此,Python 完全有可能進入前三名,甚至在未來取代 Java 成為新的第一名。
從目前 Python 的就業前景來看,總結如下:
- Python 就業情況樂觀,從 TIOBE 8 月編程語言指數排行榜以及百度指數的搜索數來看,Python 的受歡迎程度越來越高。
- 在中國地區,Python 相關職位的需求量,依然集中在三大經濟圈,特別是在北京、上海、深圳這幾個城市。從行業需求來看,主要集中在移動互聯網、數據服務、大數據分析等行業。
- 從拉勾網的數據分析可知,大部分 Python 的相關職位都要求在本科和本科以上,工作經驗要求在 1-5 年的居多。因為 Python 在大數據和人工智能領域的爆發性發展, 導致 Python 方向崗位的薪水在水漲船高,從數據分析來看,月薪在 10K-50K 不等。
注,文中源碼已上傳至 GitHub,地址:https://github.com/liaolongfei/lagou/
作者簡介:lowelong,國內某互聯網公司測試工程師,目前學習 Python 中。
一生只為尋歡笑的 Linux 之父 Linus Torvalds 說過一句至理名言 —— 「Talk is cheap. Show me the code」,這正是 CSDN 「技術頭條」欄目所秉持的初衷和願景。針對開發者們所面臨的技術痛點,面向所有開發者,一起用代碼見真章。如果你有優質的技術文章,從新技術的探索到業務落地實踐,均歡迎投稿,一起 Show code!
“徵稿啦”
CSDN 公眾號秉持著「與千萬技術人共成長」理念,不僅以「極客頭條」、「暢言」欄目在第一時間以技術人的獨特視角描述技術人關心的行業焦點事件,更有「技術頭條」專欄,深度解讀行業內的熱門技術與場景應用,讓所有的開發者緊跟技術潮流,保持警醒的技術嗅覺,對行業趨勢、技術有更為全面的認知。
如果你有優質的文章,或是行業熱點事件、技術趨勢的真知灼見,或是深度的應用實踐、場景方案等的新見解,歡迎聯繫 CSDN 投稿,聯繫方式:微信(guorui_1118,請備註投稿+姓名+公司職位),郵箱([email protected])。
閱讀更多 CSDN 的文章