Python爬取拉鉤招聘網,讓你清楚瞭解Python行業


爬蟲準備

一、先獲取薪資和學歷、工做經驗要求html

因爲拉勾網數據加載是動態加載的,須要咱們分析。分析方法以下: 在這裏插入圖片描述 F12分析頁面數據存儲位置前端

咱們發現網頁內容是經過post請求獲得的,返回數據是json格式,那咱們直接拿到json數據便可。mysql

咱們只須要薪資和學歷、工做經驗還有單個招聘信息,返回json數據字典中對應的英文爲:positionId,salary, education, workYear(positionId爲單個招聘信息詳情頁面編號)。相關操做代碼以下:git

根據獲取到的positionId來訪問招聘信息詳細頁面web

  • 根據positionId還原訪問連接:redis

position_url = []
def read_csv():
    # 讀取文件內容
    with open(r'G:\lagou_anv.csv', 'r', newline='') as file_test:
        # 讀文件
        reader = csv.reader(file_test)
        i = 0
        for row in reader:
            if i != 0 :
                # 根據positionID補全連接
                url_single = "https://www.lagou.com/jobs/%s.html"%row[0]
                position_url.append(url_single)
            i = i + 1
        print('一共有:'+str(i-1)+'個')
        print(position_url)複製代碼
  • 訪問招聘信息詳情頁面,獲取職位描述(崗位職責和崗位要求)並清理數據:算法

def get_info():
    for position_url in position_urls:
        work_duty = ''
        work_requirement = ''
        response00 = get_response(position_url,headers = headers)
        time.sleep(1)
        content = response00.xpath('//*[@id="job_detail"]/dd[2]/div/p/text()')
        # 數據清理
        j = 0
        for i in range(len(content)):
            content[i] = content[i].replace('\xa0',' ')
            if content[i][0].isdigit():
                if j == 0:
                    content[i] = content[i][2:].replace('、',' ')
                    content[i] = re.sub('[;;.0-9。]','', content[i])
                    work_duty = work_duty+content[i]+ '/'
                    j = j + 1
                elif content[i][0] == '1' and not content[i][1].isdigit():
                    break
                else:
                    content[i] = content[i][2:].replace('、', ' ')
                    content[i] = re.sub('[、;;.0-9。]','',content[i])
                    work_duty = work_duty + content[i]+ '/'
        m = i
        # 崗位職責
        write_file(work_duty)
        print(work_duty)
        # 數據清理
        j = 0
        for i in range(m,len(content)):
            content[i] = content[i].replace('\xa0',' ')
            if content[i][0].isdigit():
                if j == 0:
                    content[i] = content[i][2:].replace('、', ' ')
                    content[i] = re.sub('[、;;.0-9。]', '', content[i])
                    work_requirement = work_requirement + content[i] + '/'
                    j = j + 1
                elif content[i][0] == '1' and not content[i][1].isdigit():
                    # 控制範圍
                    break
                else:
                    content[i] = content[i][2:].replace('、', ' ')
                    content[i] = re.sub('[、;;.0-9。]', '', content[i])
                    work_requirement = work_requirement + content[i] + '/'
        # 崗位要求
        write_file2(work_requirement)
        print(work_requirement)
        print("-----------------------------")複製代碼

運行結果: 在這裏插入圖片描述 四種圖可視化數據+數據清理方式sql

  • 矩形樹圖:shell

# 1.矩形樹圖可視化學歷要求
from pyecharts import TreeMap
education_table = {}
for x in education:
    education_table[x] = education.count(x)
key = []
values = []
for k,v in education_table.items():
    key.append(k)
    values.append(v)
​
data = []
for i in range(len(key)) :
    dict_01 = {"value": 40, "name": "我是A"}
    dict_01["value"] = values[i]
    dict_01["name"] = key[i]
    data.append(dict_01)
tree_map = TreeMap("矩形樹圖", width=1200, height=600)
tree_map.add("學歷要求",data, is_label_show=True, label_pos='inside')複製代碼
  • 玫瑰餅圖:數據庫

# 2.玫瑰餅圖可視化薪資
import re
import math
''' # 薪水分類 parameter : str_01--字符串原格式:20k-30k returned value : (a0+b0)/2 --- 解析後變成數字求中間值:25.0 '''
def assort_salary(str_01):
    reg_str01 = "(\d+)"
    res_01 = re.findall(reg_str01, str_01)
    if len(res_01) == 2:
        a0 = int(res_01[0])
        b0 = int(res_01[1])
    else :
        a0 = int(res_01[0])
        b0 = int(res_01[0])
    return (a0+b0)/2
​
from pyecharts import Pie
salary_table = {}
for x in salary:
    salary_table[x] = salary.count(x)
​
key = ['5k如下','5k-10k','10k-20k','20k-30k','30k-40k','40k以上']
a0,b0,c0,d0,e0,f0=[0,0,0,0,0,0]
​
for k,v in salary_table.items():
    ave_salary = math.ceil(assort_salary(k))
    print(ave_salary)
    if ave_salary < 5:
        a0 = a0 + v
    elif ave_salary in range(5,10):
        b0 = b0 +v
    elif ave_salary in range(10,20):
        c0 = c0 +v
    elif ave_salary in range(20,30):
        d0 = d0 +v
    elif ave_salary in range(30,40):
        e0 = e0 +v
    else :
        f0 = f0 + v
values = [a0,b0,c0,d0,e0,f0]
​
pie = Pie("薪資玫瑰圖", title_pos='center', width=900)
pie.add("salary",key,values,center=[40, 50],is_random=True,radius=[30, 75],rosetype="area",is_legend_show=False,is_label_show=True)複製代碼
  • 普通柱狀圖:

# 3.工做經驗要求柱狀圖可視化
from pyecharts import Bar
workYear_table = {}
for x in workYear:
    workYear_table[x] = workYear.count(x)
key = []
values = []
for k,v in workYear_table.items():
    key.append(k)
    values.append(v)
bar = Bar("柱狀圖")
bar.add("workYear", key, values, is_stack=True,center= (40,60))複製代碼
  • 詞雲圖:

import jieba
from pyecharts import WordCloud
import pandas as pd
import re,numpy
​
stopwords_path = 'H:\PyCoding\Lagou_analysis\stopwords.txt'
def read_txt():
    with open("G:\lagou\Content\\ywkf_requirement.txt",encoding='gbk') as file:
        text = file.read()
        content = text
        # 去除全部評論裏多餘的字符
        content = re.sub('[,,。. \r\n]', '', content)
        segment = jieba.lcut(content)
        words_df = pd.DataFrame({'segment': segment})
        # quoting=3 表示stopwords.txt裏的內容所有不引用
        stopwords = pd.read_csv(stopwords_path, index_col=False,quoting=3, sep="\t", names=['stopword'], encoding='utf-8')
        words_df = words_df[~words_df.segment.isin(stopwords.stopword)]
        words_stat = words_df.groupby(by=['segment'])['segment'].agg({"計數": numpy.size})
        words_stat = words_stat.reset_index().sort_values(by=["計數"], ascending=False)
        test = words_stat.head(200).values
        codes = [test[i][0] for i in range(0, len(test))]
        counts = [test[i][1] for i in range(0, len(test))]
        wordcloud = WordCloud(width=1300, height=620)
        wordcloud.add("必須技能", codes, counts, word_size_range=[20, 100])
        wordcloud.render("H:\PyCoding\Lagou_analysis\cloud_pit\ywkf_bxjn.html")複製代碼

Python爬蟲崗位薪酬

在這裏插入圖片描述 在這裏插入圖片描述 在這裏插入圖片描述 關鍵詞解析:

學歷:本科

工做月薪:10k-30k

工做經驗:1-5年

技能:分佈式、多線程、框架、Scrapy、算法、數據結構、數據庫

綜合:爬蟲這個崗位在學歷要求上比較放鬆,大多數爲本科便可,比較適合想轉業的老哥小姐姐,學起來也不會特別難。並且薪資待趕上也還算比較優厚,基本在10k以上。不過惟一對工做經驗要求仍是比較高的,有近一半的企業要求工做經驗要達到3年以上。

Python數據分析崗位

在這裏插入圖片描述 在這裏插入圖片描述 在這裏插入圖片描述 關鍵詞解析:

學歷:本科(碩士比例有所增高)

工做月薪:10k-30k

工做經驗:1-5年

技能:SAS、SPSS、Hadoop、Hive、數據庫、Excel、統計學、算法

綜合:數據分析這個崗位在學歷要求上比爬蟲要求稍微高一些,碩士比例有所提高,專業知識上有必定要求。薪資待趕上也還算比較優厚,基本在10k以上,同時薪資在30k-40k的比例也有所上升。對工做經驗要求仍是比較高,大部分的企業要求工做經驗要達到3年以上。

Python後端崗位

在這裏插入圖片描述 在這裏插入圖片描述 在這裏插入圖片描述 關鍵詞解析:

學歷:本科

工做月薪:10k-30k

工做經驗:3-5年

技能:Flask、Django、Tornado、Linux、MySql、Redis、MongoDB、TCP/IP、數學(哈哈)

綜合:web後端這個崗位對學歷要求不高,但專業知識上有很大要求,得會Linux操做系統基本操做、三大主流數據庫的使用、以及三大基本web框架的使用等計算機相關知識,整體來講難道仍是比較大。薪資待趕上也比較優厚,基本在10k以上,同時薪資在30k-40k的比例也有近20%。對工做經驗要求仍是比較高,大部分的企業要求工做經驗要達到3年以上。

Python全棧開發崗位 在這裏插入圖片描述 在這裏插入圖片描述 在這裏插入圖片描述 關鍵詞解析:

學歷:本科

工做月薪:10k-30k

工做經驗:3-5年

技能:測試、運維、管理、開發、數據結構、算法、接口、虛擬化、前端

綜合:全棧開發這個崗位什麼都要懂些,什麼都要學些,在學歷要求上並不過高,本科學歷便可,在專業知識上就不用說了,各個方面都得懂,還得理解運用。薪資待趕上也還能夠,基本在10k以上,薪資在30k-40k的比例也有近20%。對工做經驗要求仍是比較高,大部分的企業要求工做經驗要達到3年以上。整體來講,就我我的而言會以爲全棧是個吃力多薪水少的崗位。

Python運維開發崗位 在這裏插入圖片描述 在這裏插入圖片描述 在這裏插入圖片描述 關鍵詞解析:

學歷:本科

工做月薪:10k-30k

工做經驗:3-5年

技能:SVN、Git、Linux、框架、shell編程、mysql,redis,ansible、前端框架

綜合:運維開發這個崗位在學歷要求上不高,除開佔一大半的本科,就是專科了。工做經驗上仍是有一些要求,大多數要求有3-5年工做經驗。從工資上看的話,不高也不低,20k以上也佔有62%左右。要學習的東西也比較多,前端、後端、數據庫、操做系統等等。

Python機器學習崗位 在這裏插入圖片描述 在這裏插入圖片描述 在這裏插入圖片描述 關鍵詞解析:

學歷:本科(碩士也佔比很大)

工做月薪:30k以上

工做經驗:3-5年

技能:Machine Learning,Data Mining,Algorithm 研發,算法,Linux,決策樹,TF,Spark+MLlib,Cafe

綜合:機器學習這個崗位在學歷要求上比較嚴格,雖然看起來是本科居多,但對於剛畢業或畢業不久的同窗,若是隻是個本科,應聘仍是頗有難度的。固然機器學習崗位薪資特高,60%在30k以上,近90%在20k以上,97%在10k以上。除開對學歷要求比較高外,對工做經驗要求也比較高,有近一半的企業要求工做經驗要達到3年以上。

Python架構師崗位 在這裏插入圖片描述 在這裏插入圖片描述 在這裏插入圖片描述 關鍵詞解析:

學歷:本科

工做月薪:30k以上

工做經驗:5-10年

技能:Flask,Django,MySQL,Redis,MongoDB,Hadoop,Hive,Spark,ElasticSearch,Pandas,Spark/MR,Kafka/rabitmq

綜合:架構師這個崗位單從學歷上看不出什麼來,但在薪資上幾乎與機器學習同樣,甚至比機器學習還要高,機器學習中月薪40k以上的佔23.56%,架構師中月薪40k以上的佔30.67%。在學歷要求上比機器學習要略低,本科居多,但在工做經驗上一半以上的企業要求工做經驗在5-10年。在必要技能上也要求特別嚴格,比以前說過的全棧開發師有過之而無不及。

看着這月薪,你想去哪裏呢

相關文章
相關標籤/搜索