在上一篇博客中,我和大家分享了整個11月份找作業的心路歷程,而在找作業的程序中,博主發現西安大小周、單休這種變相“996”的公司越來越多,感慨整個行業越來越“內卷”的同時,不免會對未來的人生有一點迷茫,因為深圳已經開始試運行“996”了,如果有一天“996”被合法化并成為一種常態,那么,我們又該如何去面對“人會一天天衰老,總有一天肝不動”的客觀規律呢?我注意到Boss直聘移動端會展示某個公司的作息時間,所以,我有了抓取西安市職位和公司資訊并對其進行資料分析的想法,我想知道,這到底是我一個人的感受呢?還是整個世界的確是這樣子的呢?帶著這樣的想法,博主有了今天這篇博客,所以,在今天這篇博客里,博主會從Boss直聘、智聯招聘以及前程無憂上抓取職位和公司資訊,并使用MongoDB對資料進行持久化,最終通過pyecharts對結果進行可視化展示,雖然不大確定2021年會不會變得更好,可生活最迷人的地方就在于它的不確定性,正如資料分析唯一可以做的,就是幫助我們從變化的事物中挖掘出不變的規律一樣,
爬蟲撰寫
其實,這種類似的資料分析,博主此前做過挺多的啦,譬如 基于Python實作的微信好友資料分析 以及 基于新浪微博的男女性擇偶觀資料分析(下) 這兩篇博客,總體上來說,大部分學習Python的朋友都是從撰寫爬蟲開始的,而在博主看來,資料分析是最終的目的,撰寫爬蟲則是達到這一目的的手段,而從始至終,“爬”與“反爬”的較量從未停止過,Requests、BeautifulSoup、Selenium、Phantom等等的技術層出不窮,考慮到現在撰寫爬蟲存在風險,所以,我不會在博客里透露過多的“爬蟲”細節,換言之,我不想成為一個教別人寫爬蟲的人,因為這篇博客的標簽是資料分析,關于爬蟲的部分,我點到為止,不再過多地去探討它的實作,希望大家理解,而之所以要從這三個招聘網站上抓取,主要還是為了增加樣本的多樣性,因為Boss直聘上西安市的職位居然只有3頁,這實在是太讓人費解了!
Boss直聘
通過抓包,我們可以分析出Boss直聘的地址:https://www.zhipin.com/job_detail/?query={query}&city={cityCode}&industry=&position=&page={page},其中,query為待查詢關鍵詞,cityCode為待查詢城市代碼,page為待查詢的頁數,可以注意到,industry和position兩個引數沒有維護,它們分別表示待查詢的行業和待查詢的職稱,因為我們面向的是更一般的“打工人”,所以,這些都可以進行簡化,對于cityCode這個引數,我們可以通過下面的介面獲得:https://www.zhipin.com/wapi/zpCommon/data/city.json,這里,簡單定義一個方法extractCity()來提取城市代碼:
def extractCity(self, cityName=None):
if (os.path.exists('bossCity.json') and cityName != None):
with open('bossCity.json', 'rt', encoding='utf-8') as fp:
cityList = json.load(fp)
for city in cityList:
if (city['name'] == cityName):
return city['code']
else:
response = requests.get(self.cityUrl)
response.raise_for_status()
json_data = response.json();
if (json_data['code'] == 0 and json_data['zpData'] != None):
cityList = []
for level in json_data['zpData']['cityList']:
cityList.extend(self.unfoldLevel(level))
with open('bossCity.json', 'wt', encoding='utf-8') as fp:
json.dump(cityList, fp)
if (cityName != None):
for city in cityList:
if (city['name'] == cityName):
return city['code']
else:
return json_data['zpData']['locationCity']['code']
接下來,我們可以撰寫searchJobs()方法來實作職位的檢索:
def searchJobs(self, cityName, query, page=1):
cityCode = self.extractCity(cityName)
if (cityCode != None):
searchUrl = 'https://www.zhipin.com/job_detail/?query={query}&city={cityCode}&industry=&position=&page={page}'.format(cityCode=cityCode, query=query, page=str(page))
html = self.makeRequest(searchUrl)
soup = BeautifulSoup(html)
details = soup.find_all(name='div',attrs={'class','job-primary'})
jobItems = []
companyItems = []
for detail in details:
jobItem = self.extractJob(detail)
if (jobItem == None):
continue
else:
jobItems.append(jobItem)
companyItem = self.extractCompany(detail)
if (companyItem == None):
continue
else:
jobItem['company'] = companyItem['title']
jobItem['industry'] = companyItem['industry']
companyItems.append(companyItem)
return (jobItems,companyItems)
這里我們會用到requests、fake_useragent以及BeautifulSoup,如果你經常撰寫爬蟲的話,對它們應當不會感到陌生,唯一需要注意的有兩點:第一,Boss直聘會封殺爬蟲的IP,所以,可以考慮從互聯網上抓取免費的代理IP作為代理池,每次發起請求時隨機選取一個IP作為代理IP,這樣可以有效地減少被封殺的可能,第二,Boss直聘的Cookie最多只能使用4次,超過4次后就需要重新獲取Cookie, 目前,我沒有找到好的解決方案,有興趣的朋友可以參考 2019年末逆向復習系列之Boss直聘Cookie加密欄位__zp_stoken__逆向分析 這篇博客做一點逆向方面的研究,或者考慮使用PyExecJS載入前端JavaScript腳本來生成Cookie,因為逆向并不是我這篇博客的重點,在解決了這兩個問題后,我們就可以提取出每一頁的崗位和公司資訊,而這些都可以通過BeautifulSoup解決,這里不再贅述,關于Boss直聘部分的源代碼,請參考:https://github.com/qinyuanpei/job-analyse/blob/master/Spider/bossSpider.py,
智聯招聘
智聯招聘相對于Boss直聘要簡單一點,通過抓包分析,我們可以找到這樣一個地址:https://fe-api.zhaopin.com/c/i/sou?at={at}&_v={v}&x-zp-page-request-id={x-zp-page-request-id}&x-zp-client-id={v}&MmEwMD={MmEwMD},通過這個介面可以直接獲得JSON格式的資料,可想要構造這幾個引數出來,實在是有一點困難,因為它遇到和Boss直聘一樣的問題,基本都需要一定的逆向功底,而如果嘗試去決議DOM,你會發現它的前端使用了Vue.js,換句話說,這個網站是由前端完成渲染的,這意味著,如果我直接訪問https://sou.zhaopin.com/?jl=854這個地址,是無法拿到可以決議的DOM結構的,這就多少會有一點尷尬,所以,實際上博主最后沒有實作智聯招聘的爬蟲,因為在這上面投入太多的精力,實在有一點得不償失,這里簡單說一下思路,基本上我們需要以POST方式呼叫這個介面,然后在Body中寫入下面的結構:
{"pageSize":"30","cityId":854,"workExperience":"-1","companyType":"-1","employmentType":"-1","jobWelfareTag":"-1","kt":"3","at":"20673d42d62d48c38add329318fb9e2c","rt":"84a950e77e054854b4d2f9d90826d063","_v":"0.97312845","userCode":662040894,"eventScenario":"pcSearchedSouIndex","cvNumber":"JM620408945R90500002000"}
這里依然要解決Cookie的問題,它這個Cookie簡直不能更惡心,因為引數實在是太多了:

那么,我放棄了,感興趣的朋友可以順著這個思路繼續探索,加油!
前程無憂
相對于Boss直聘和智聯招聘,前程無憂要更簡單一點,這種簡單是從心智體驗上來講,經過分析,它的地址為:https://search.51job.com/list/200200,000000,0000,00,9,99,+,2,{page}.html?lang=c&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare=,它的簡單體現在,可以直接通過修改page這個引數來達到抓取某一頁資料的目的,它本身沒有特別強大的反爬機制,所以,事實上,它是整個資料分析主要的資料來源,在這個地址里可能有一點大家看不懂的東西,沒關系,博主一樣看不懂,我們只需要知道它表示西安就可以了,如果想抓取某個城市的職位資訊,可以直接在前程無憂上搜索,地址欄會告訴你這一切是如何變化的,需要說明的是,前程無憂的職位資訊是存盤在window.__SEARCH_RESULT__這個變數里的,所以,我們通過這個正則直接去匹配它即可,不需要再去決議DOM,這再次體現出了它的簡單:
def searchJobs(self, cityName, query, page=1):
cityCode = cityName
if (cityCode != None):
searchUrl = 'https://search.51job.com/list/200200,000000,0000,00,9,99,+,2,{page}.html?lang=c&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare='.format(page=str(page))
html = self.makeRequest(searchUrl)
data = re.findall('window.__SEARCH_RESULT__ =(.+)}</script>', str(html))[0] + "}"
details = json.loads(data)['engine_search_result']
jobItems = []
companyItems = []
for detail in details:
jobItem = self.extractJob(detail)
if (jobItem == None):
continue
else:
jobItems.append(jobItem)
companyItem = self.extractCompany(detail)
if (companyItem == None):
continue
else:
companyItems.append(companyItem)
return (jobItems,companyItems)
因為這里真正起作用的實際上只有page這個引數,所以,我們只需要回圈每一頁就可以了,博主就是通過這個方法抓取了大量的職位資訊,同樣地,我們通過extractJob()和extractCompany()兩個方法來組裝職位和公司的資訊,最終通過元組的形式回傳,由呼叫者自己決定要如何去處理這些資料,雖然,我們選擇了MongoDB這樣的資料庫,它不像關系型資料庫那樣重視Schema,可為了我們最終分析資料的時候方便一點,還是建議使用一致的資料結構,關于前程無憂部分的源代碼,請參考:https://github.com/qinyuanpei/job-analyse/blob/master/Spider/job51Spider.py,
資料分析
在開始今天的資料分析前,首先向大家展示下爬蟲抓取到的資料,截止到寫這篇的博客的時間,博主一共收集了20000個左右的職位/公司資訊,如下圖所示:


接下來,我們從資料庫中讀取這些資料以開始下面的分析:
store = Store.mongoStore.MongoStore('default')
jobs = list(store.find('job',{}))
companies = list(store.find('company',{}))
行業結構分析
俗話說,“男怕入錯行,女怕嫁錯郎”,我們今天的社會是一個非常“苛刻”的社會,它要求每一個人在“合適”的年齡做“該做”的事情,可要達到這樣一個“標準”則是非常不容易的,在綜藝節目《令人心動的Offer》里,“大齡”、“裸辭”、“背水一戰”的丁輝,受到了來自紅圈律所的“精英”們的區別對待,仿佛一個人的人生不能有一丁點的差錯,或許人生的“試錯”成本真的非常高,高到人們在30歲左右的時候紛紛遭遇中年危機,所以,我們實在有必要去了解一個行業,它目前的求職現狀到底是什么樣的,這里以西安市為例:
def analyse_industry():
industries = list(map(lambda x:x['industry'],companies))
counter = Counter(industries)
counter = sorted(counter.items(),key = lambda x:x[1],reverse = True)[0:15]
counter = dict(counter)
c = (
Pie()
.add("",[list(z) for z in zip(counter.keys(), counter.values())],label_opts=opts.LabelOpts(is_show=True, position="center"),)
.set_global_opts(
title_opts=opts.TitleOpts(title="西安市求職招聘行業結構分析(Top15)",pos_left=325),
legend_opts=opts.LegendOpts(type_="scroll", pos_left="left", orient="vertical"),
)
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
.render("./Reports/西安市求職招聘行業結構分析(Top15).html")
)
下面是整個西安市求職招聘排名前15位的行業結構:

可以注意到,其中占據份額較大的行業主要有:房地產、建筑/建材/工程、計算機軟體、電子技術/半導體/集成電路、教育/培訓/院校等,
學歷結構分析
作為一個“西漂”,博主對西安最深的一個印象就是,西安有著非常豐富的高校資源,正因為如此,博主一度認為西安遍歷都是研究生,因為在過去的四年里,的確接觸過不少研究生學歷的同事,相比之下,博主這樣一個普通211、非科班的本科生,著實顯得有點相形見絀,我在之前的博客里有提到去中興面試的經歷,這個經歷讓我第一次意識到,學歷和非科班的出身,終究有一天會成為你進入國企或者大廠的門檻,所以,博主在考慮要不要去讀一個在職的研究生,這種認識到底是不是幸存者偏差呢,我們來看看資料分析的結果:
def analyse_education():
eduInfos = list(map(lambda x:x['eduInfo'], jobs))
counter = Counter(eduInfos)
counter = sorted(counter.items(),key = lambda x:x[1],reverse = True)
counter = dict(counter)
c = (
Pie()
.add("",[list(z) for z in zip(counter.keys(), counter.values())])
.set_global_opts(
title_opts=opts.TitleOpts(title="西安市求職招聘學歷結構分析",pos_left=325),
legend_opts=opts.LegendOpts(type_="scroll", pos_left="left", orient="vertical"),
)
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
.render("./Reports/西安市求職招聘學歷結構分析.html")
)
我承認我在胡說八道,因為結果非常的Amazing啊,非常的畢導啊:

我沒有想到研究生以上的比例這么低,可能是因為我身邊這些同事的層次都比較高吧,哈哈!可當學歷逐漸成為一種門檻,即使你比本科生多上三年學,最后一樣要在這世界上顛沛流離的時候,是不是會和博主有一樣的疑問,為什么IT行業會變成勞動密集型產業?是因為門檻低讓這個行業劣幣驅逐良幣呢,還是擁有高學歷的人才一樣要去擰螺絲?
薪資待遇分析
有時候,我會忍不住想,是不是在任何一個城市里,人們工資增長永遠都趕不上房價增長?如果真的是這樣,我們為什么又要從三線小城市出來呢?可能是覺得大城市有更好的機會吧,可轉眼到了2020年,上大學時一心想從事這個行業的我,當時無論如何都想不到若干年后要面對“35歲”這個問題,當“996”作為一種“福報”的聲音越來越強烈,曾經我們認為的那“一點點”機會,真的就是只剩下“一點點”,人有時候就是在靠著那點“不切實際”過日子,譬如固執的認為收入會越來越高,可其實任何作業都是有天花板的存在的,以大多數普通人的努力程度,一輩子連天花板都可能觸碰不到,真實的薪資水平到底是什么樣的呢?年薪30萬果真如此尋常等閑?我們一起來看:
def analyse_salary():
salaries = list(map(lambda x:x['avgSalary'], list(filter(lambda x:x['avgSalary'] != 0, jobs))))
counter = Counter(salaries)
counter = sorted(counter.items(),key = lambda x:x[1],reverse = True)
records = {'3000元以下':0, '3000元-5000元':0, '5000元-8000元':0, '8000元-12000元':0, '12000元-15000元':0, '15000元以上':0}
for (k,v) in counter:
if (k < 3000):
records['3000元以下'] += v
if (k >= 3000 and k < 5000):
records['3000元-5000元'] += v
if (k >= 5000 and k < 8000):
records['5000元-8000元'] += v
if (k >= 8000 and k < 12000):
records['8000元-12000元'] += v
if (k >= 12000 and k < 15000):
records['12000元-15000元'] += v
if (k >= 15000):
records['15000元以上'] += v
counter = dict(records)
c = (
Pie()
.add("",[list(z) for z in zip(counter.keys(), counter.values())])
.set_global_opts(
title_opts=opts.TitleOpts(title="西安市求職招聘平均工資分析",pos_left=325),
legend_opts=opts.LegendOpts(type_="scroll", pos_left="left", orient="vertical"),
)
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
.render("./Reports/西安市求職招聘平均工資分析.html")
)
由此,我們得到了整個西安市的收入分布情況,顯然,**5000~8000*這個收入區間才是大多數普通人的真實寫照:

我們繼續分析,哪些行業的平均工資更高一點,因為這樣你會找到同齡人的參考物件:
def analyse_industry_salary():
filtered = list(filter(lambda x:x['avgSalary'] != 0, jobs))
salaries = {}
for job in filtered:
if (job['industry'] == ''):
continue
if salaries.get(job['industry']) == None:
salaries[job['industry']] = [job['avgSalary']]
else:
salaries[job['industry']].append(job['avgSalary'])
counter = {}
for (industry, data) in salaries.items():
counter[industry] = int(sum(data) / len(data))
counter = sorted(counter.items(),key = lambda x:x[1],reverse = True)[0:15]
counter = dict(counter)
c = (
Bar()
.add_xaxis(list(counter.keys()))
.add_yaxis("平均工資", list(counter.values()))
.set_global_opts(
title_opts=opts.TitleOpts(title="西安市求職招聘行業工資分析(Top15)", pos_left=325),
legend_opts=opts.LegendOpts(type_="scroll", pos_left="left", orient="vertical"),
)
.render("./Reports/西安市求職招聘行業工資分析(Top15).html")
)
類似地,我們這里取排名前15位的行業進行分析:

可以注意到,工資收入靠前的行業主要集中在:互聯網/移動互聯網/計算機軟體/電子商務、信托/拍賣/典當/擔保、 智能硬體、法律、學術/科研、保險、房地產、金融/投資/證券、美容/保健等行業,可惜,從一名IT行業從業者的角度來看,西安實際上并沒有真正的互聯網公司,這個世界常常如此,每個月掙15K的人感慨自己買不起房,可還有那么多收入在8K以下的人群,還能再說什么呢?
學歷與薪資關系分析
通常大家都認為,學歷越高,薪資就會越高,那么,這個是否符合實際情況呢,我們一起來看一下:
def analyse_eduInfo_salary(industry=None):
filtered = list(filter(lambda x:x['avgSalary'] != 0, jobs))
if (industry != None):
filtered = list(filter(lambda x:x['industry'] == industry, filtered))
salaries = {}
for job in filtered:
if (job['eduInfo'] == ''):
continue
eduInfo = job['eduInfo']
if (eduInfo in ['學歷不限','不限']):
eduInfo = '學歷不限'
if salaries.get(eduInfo) == None:
salaries[eduInfo] = [job['avgSalary']]
else:
salaries[eduInfo].append(job['avgSalary'])
counter = {}
for (eduInfo, data) in salaries.items():
counter[eduInfo] = int(sum(data) / len(data))
c = (
Bar()
.add_xaxis(list(counter.keys()))
.add_yaxis("平均工資", list(counter.values()))
.set_global_opts(
title_opts=opts.TitleOpts(title="西安市求職招聘學歷與薪資關系分析", pos_left=325),
legend_opts=opts.LegendOpts(type_="scroll", pos_left="left", orient="vertical"),
)
.render("./Reports/西安市求職招聘學歷與薪資關系分析.html")
)
下面給出可視化以后的結果:

可以發現,整體上學歷和薪資是呈正比的,甚至“不限學歷”比“高中”的工資還要高一點,可如果有那么多“不限學歷”的作業,為什么今年還有那么多人找不到作業呢?我想,這就是我們常說的選擇,我們之所以付出努力,無非是想比別人多一點選擇,可正如納什均衡理論所言,如果我們大家都去選擇相同的東西,最后的結果可能是大家都得不到這樣東西,可話又說回來,明明都知道那個行業熱門,如果不做這個選擇,反而才是最奇怪的吧…
經驗與薪資關系分析
如果說學歷與薪資呈正比,那么經驗與薪資則不一定滿足這樣的關系,因為經驗其實是一個不準確的“度量”單位,以IT行業為例,在一家公司里,老員工的薪資被新員工的薪資“倒掛”是經常發生的事情,所以,人們似乎達成了某種共識,即期待公司主動漲薪是非常困難的,你唯一能做的就是在面試時爭取更多的薪資,這就要說到經驗這個話題,IT行業技術日新月異的特點,實在很難讓經驗變成一個“褒義詞”,因為經驗在積累的同時同樣在“過期”,更不用說那些一直在“重復”的人了,所以,我覺得掌握通用型的知識譬如演算法、資料結構等會更重要,
def analyse_exps_salary(industry=None):
filtered = list(filter(lambda x:x['avgSalary'] != 0, jobs))
if (industry != None):
filtered = list(filter(lambda x:x['industry'] == industry, filtered))
salaries = {}
for job in filtered:
if (job['exps'] == ''):
continue
exps = job['exps']
exps = exps.replace('經驗','')
if (exps in ['1年','1年以內','2年','1-3年']):
exps = '1-3年'
if (exps in ['不限','經驗不限']):
exps = '經驗不限'
if (exps in ['3到4年','3到5年','3-4年','3-5年']):
exps = '3-5年'
if (exps in ['8到9年','5到10年','5到7年','8-9年','5-10年','5-7年']):
exps = '5-10年'
if salaries.get(exps) == None:
salaries[exps] = [job['avgSalary']]
else:
salaries[exps].append(job['avgSalary'])
counter = {}
for (industry, data) in salaries.items():
counter[industry] = int(sum(data) / len(data))
c = (
Bar()
.add_xaxis(list(counter.keys()))
.add_yaxis("平均工資", list(counter.values()))
.set_global_opts(
title_opts=opts.TitleOpts(title="西安市求職招聘作業經驗與薪資關系分析", pos_left=325),
legend_opts=opts.LegendOpts(type_="scroll", pos_left="left", orient="vertical"),
)
.render("./Reports/西安市求職招聘作業經驗與薪資關系分析.html")
)
一切都會向著我們期待的方向發展嗎?我們拭目以待:

可以發現,整體上,經驗越豐富,薪資待遇會越高,前提是你真的識訓了經驗,而不是在歲月的蹉跎里單單識訓了皺紋和滄桑,這是我們每個人都應該去反思的一個問題,如果一切的經驗都有過時的那一天,至少你真的擁有過它們,就像愛情這種東西一樣,
招聘熱詞分析
在招聘網站上,一般都會以標簽的方式,對職位要求、公司福利等進行描述,譬如五險一金、彈性打卡等等,通過這些標簽,我們就能對職位以及公司有個基本印象,所以,我們可以通過分析這些標簽,來展示在求職程序中求職者和招聘方各自關注哪些因素,下面,我們將以詞云的形式來展示這些標簽:
# 提取崗位關鍵字
job_tags = []
for item in map(lambda x:x['tags'], jobs):
if (item != None):
job_tags.extend(item)
# 提取公司關鍵字
company_tags = []
for item in map(lambda x:x['tags'], companies):
if (item != None):
company_tags.extend(item)
def analyse_extract_tags(words,title):
words = list(filter(lambda x:x!='', words))
data = Counter(words)
c= (
WordCloud()
.add(series_name="熱門詞匯", data_pair=data.items(), word_size_range=[6, 66])
.set_global_opts(
title_opts=opts.TitleOpts(
title=title, title_textstyle_opts=opts.TextStyleOpts(font_size=23)
),
tooltip_opts=opts.TooltipOpts(is_show=True),
)
.render('.\Reports\{title}.html'.format(title=title))
)
analyse_extract_tags(
words=job_tags,
title='西安市求職者熱詞分析'
)
analyse_extract_tags(
words=company_tags,
title='西安市招聘者熱詞分析'
)


可以注意到,五險一金、年終獎金、專業培訓、績效獎金、節日福利、帶薪年假是大家普遍關注的點,
本文小結
本文主要抓取了Boss直聘、智聯招聘、前程無憂三個招聘網站的職位資訊和公司資訊,并在此基礎上對西安市的求職招聘進行了資料分析,主要從行業結構、學歷結構、薪資待遇、學歷與薪資關系、經驗與薪資關系、招聘熱詞等方面入手,經分析,針對西安市的求職招聘的求職招聘,我們可以得出下面的結論:(1)西安市排名相對靠前的行業主要有:房地產、建筑/建材/工程、計算機軟體、電子技術/半導體/集成電路、教育/培訓/院校等;(2)西安市招聘的職位中大專和本科學歷約占總職位的75%左右,碩士以及博士學歷相對較低;(3)西安市的平均薪資中,5000~8000這個收入區間是大多數普通人的真實寫照,工資收入靠前的行業主要集中在:互聯網/移動互聯網/計算機軟體/電子商務、信托/拍賣/典當/擔保、 智能硬體、法律、學術/科研、保險、房地產、金融/投資/證券、美容/保健等行業;(4)擁有高學歷的人更有可能擁有高薪資;(5)整體上,經驗越豐富,薪資待遇會越高,前提是你真的識訓了經驗,而不是在歲月的蹉跎里單單識訓了皺紋和滄桑;(6)在整個求職招聘中,無論是求職者還是招聘者,普遍看重的因素有:五險一金、年終獎金、專業培訓、績效獎金、節日福利、帶薪年假等,雖然一開始的目的是想知道西安有多少“996”的公司,不過在后續的實作程序中,發現從Boss直聘上抓取不到這些資訊,所以,最終呈現出的結果就變成了現在這個樣子,考慮到篇幅,關于公司規模、公司型別的分析,沒有在這里寫出來,如果大家感興趣,可以參考:https://github.com/qinyuanpei/job-analyse/tree/master,以上就是這篇博客的全部內容啦,謝謝大家!
CSDN認證博客專家
.NET
Python
偽·全堆疊攻城獅
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/232636.html
標籤:AI
