就业数据分析,地区、学历、职业关联性,薪资预测

数据爬取

爬取目标为58同城,爬取数据包括

"地区"行业"公司"职位"薪资"学历"工作年限"
#获取行业列表
catenames = [] #行业
dr.find_element_by_xpath("/html/body/div[3]/div[1]/div/div[2]/a").click()#点击行业下拉菜单
li = dr.find_elements_by_xpath("/html/body/div[3]/div[1]/div/div[2]/div/table/tbody/tr/td/ul/li/a")#解析页面内容
for i in li:
    #print(i.get_attribute("text"))
    catenames.append(i.get_attribute("text"))
dr.find_element_by_xpath("/html/body/div[3]/div[1]/div/div[2]/a").click()#点击行业下拉菜单


#逐个获取每个行业的招聘信息
for catename in catenames:
    dr.find_element_by_xpath("/html/body/div[3]/div[1]/div/div[2]/a").click()#点击行业下拉菜单
    ActionChains(dr).move_to_element(dr.find_element_by_link_text(catename)).perform()
    dr.find_element_by_link_text("全部").click()
    time.sleep(10)
    total_page = dr.find_element_by_xpath("/html/body/div[3]/div[3]/div/div/div/span[2]").text #招聘信息页数
    for page in range(int((int(total_page)-1)/2)):
        
        address = dr.find_elements_by_xpath("/html/body/div[3]/div[4]/div[1]/ul/li/div[1]/div/a/span[1]")
        cate = catename
        company = dr.find_elements_by_xpath("/html/body/div[3]/div[4]/div[1]/ul/li/div[2]/div/a")
        job = dr.find_elements_by_xpath("/html/body/div[3]/div[4]/div[1]/ul/li/div[2]/p/span[1]")
        salary = dr.find_elements_by_xpath("/html/body/div[3]/div[4]/div[1]/ul/li/div[1]/p")
        xueli = dr.find_elements_by_xpath("/html/body/div[3]/div[4]/div[1]/ul/li/div[2]/p/span[2]")
        jinyan = dr.find_elements_by_xpath("/html/body/div[3]/div[4]/div[1]/ul/li/div[2]/p/span[3]")
        for i in range(len(job)):
            print(address[i].text,cate,company[i].text,job[i].text,salary[i].text,xueli[i].text,jinyan[i].text)
            data.append([address[i].text,cate,company[i].text,job[i].text,salary[i].text,xueli[i].text,jinyan[i].text])
        dr.find_element_by_xpath("/html/body/div[3]/div[4]/div[1]/div[2]/a[2]").click()
        time.sleep(0.5)
    dr.find_element_by_xpath("/html/body/div[3]/div[4]/div[1]/div[2]/span[1]/a[1]").click()
    


#%%

#保存数据
df = pd.DataFrame(data,columns=["address","cate","company","job","salary","xueli","jinyan"])
df.to_csv(r"原始数据.csv",encoding="utf-8-sig")

通过selenium.webdriver模块进行模拟浏览器操作,解析对应的数据,数据爬取结果如下

使用flask搭建web页面实现数据的可视化,包括地区、行业、薪资、学历、经验以及地区和薪资关系、行业和薪资关系、学历和薪资关系、经验和薪资关系等等。

以地区为例,地区数量分布以饼状图展示,地区薪资分布以箱型图展示

薪资预测

    from sklearn.naive_bayes import GaussianNB
    X = df[['county', 'cate', 'xueli', 'jinyan']]
    Y = df['salary']
    print('数据维度:',X.shape, Y.shape)
    X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=0)
    print('训练集维度:',X_train.shape, y_train.shape)
    # 查看测试集维度
    print('测试集维度:',X_test.shape, y_test.shape)
    # 建立高斯朴素贝叶斯模型
    clf = GaussianNB()
    clf.fit(X_train, y_train)
    # ##### 使用测试集数据检验模型准确率

    print('测试集数据检验模型准确率:',clf.score(X_test, y_test))
    y_pred = clf.predict(X_test)
    print(y_pred)
    print("模型准确度:", metrics.precision_score(y_test, y_pred,average='micro'))
    y_li = clf.predict(X_li2)
    print("预测结果:",y_li)
    print('召回率:',metrics.recall_score(y_test,y_pred,average='micro'))

通过建立高斯朴素贝叶斯模型,对原始数据进行训练,最后将用户输入的数据使用predict预测,返回预测结果,预测页面如下。

​​​​​​​

更多源码可以+q学习交流

892532969

  • 1
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_892532969

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值