基于Hadoop的项目实战-职位数据综合分析

本文详细介绍了使用Selenium爬取全国及热门城市人工智能职位数据的过程,涉及数据预处理、Hadoop Hive分析、数据可视化以及PageRank和薪资预测等数据挖掘技术。通过分析,得出职位分布、人才需求、工作经验、学历要求、薪资趋势等关键结论,为理解AI行业提供了宝贵信息。
摘要由CSDN通过智能技术生成

 一、数据采集(selenium)

from selenium import webdriver
import time
import re
import pandas as pd
import os

 在爬取的过程中可能会有登陆弹窗,要先定义一个处理弹窗的函数

def close_windows():
    #如果有登录弹窗,就关闭
    try:
        time.sleep(0.5)
        if dr.find_element_by_class_name("jconfirm").find_element_by_class_name("closeIcon"):
            dr.find_element_by_class_name("jconfirm").find_element_by_class_name("closeIcon").click()
    except BaseException as e:
        print('close_windows,没有弹窗',e)

 爬取部分,这里爬取维度为11列,基本上包含了职位的大部分信息

def get_current_region_job(k_index):
    flag = 0
    # page_num_set=0#每区获取多少条数据,对30取整

    df_empty = pd.DataFrame(columns=['岗位', '地点', '薪资', '工作经验', '学历', '公司名称', '技能','工作福利','工作类型','融资情况','公司规模'])
    while (flag == 0):
        # while (page_num_set<151)&(flag == 0):#每次只能获取150条信息
        time.sleep(0.5)
        close_windows()
        job_list = dr.find_elements_by_class_name("job-primary")
        for job in job_list:#获取当前页的职位30条
            job_name = job.find_element_by_class_name("job-name").text
            # print(job_name)
            job_area = job.find_element_by_class_name("job-area").text
            # salary = job.find_element_by_class_name("red").get_attribute("textContent")  # 获取薪资
            salary_raw = job.find_element_by_class_name("red").get_attribute("textContent")  # 获取薪资
            salary_split = salary_raw.split('·')  # 根据·分割
            salary = salary_split[0]  # 只取薪资,去掉多少薪

            # if re.search(r'天', salary):
            #     continue

            experience_education = job.find_element_by_class_name("job-limit").find_element_by_tag_name(
                "p").get_attribute("innerHTML")

            # experience_education_raw = '1-3年<em class="vline"></em>本科'
            experience_education_raw = experience_education
            split_str = re.search(r'[a-zA-Z =<>/"]{23}', experience_education_raw)  # 搜索分割字符串<em class="vline"></em>
            # print(split_str)

            experience_education_replace = re.sub(r'[a-zA-Z =<>/"]{23}', ",", experience_education_raw)  # 分割字符串替换为逗号
            # print(experience_education_replace)

            experience_education_list = experience_education_replace.split(',')  # 根据逗号分割
            # print('experience_education_list:',experience_education_list)

            if len(experience_education_list)!=2:
                print('experience_education_list不是2个,跳过该数据',experience_education_list)
                break
            experience = experience_education_list[0]
            education = experience_education_list[1]
            # print(experience)
            # print(education)

            company_type = job.find_element_by_class_name("company-text").find_element_by_tag_name(
                "p").get_attribute("innerHTML")
            company_type_size_row=company_type
            split_str_2=re.search(r'[a-zA-Z =<>/"]{23}', company_type_size_row)
            # print(split_str_2)
            # print("split2------------------------------------------------------")
            company_size_replace= re.sub(r'[a-zA-Z =<>/"]{23}', ",", company_type_size_row)
            # print(company_size_replace)

            company_size_list=company_size_replace.split(',')
            # print(company_size_list)

            if len(company_size_list) != 3:
                print('company_size_list不是3个,跳过该数据', company_size_list)
                break
            company_direct_info = company_size_list[0].split(">")[1]
            company_salary_info = company_size_list[1].split(">")[1]
            company_size_info=company_size_list[2]



            company = job.find_element_by_class_name("company-text").find_element_by_class_name("name").text

            skill_list = job.find_element_by_class_name("tags").find_elements_by_class_name("tag-item")
            skill = []
            job_advantage=job.find_element_by_class_name("info-desc").text
            for skill_i in skill_list:
                skill_i_text = skill_i.text
                if len(skill_i_text) == 0:
                    continue
                skill.append(skill_i_text)
            # print(job_name)
            # print(skill)

            df_empty.loc[k_index, :] = [job_name, job_area, salary, experience, education, company, skill,job_advantage,company_direct_info,company_salary_info,company_size_info]
            print(df_empty.loc[k_index, :])
            k_index = k_index + 1
            # page_num_set=page_num_set+1
            print("已经读取数据{}条".format(k_index))

        close_windows()
        try:#点击下一页
            cur_page_num=dr.find_element_by_class_name("page").find_element_by_class_name("cur").text
            # print('cur_page_num',cur_page_num)

            #点击下一页
            element = dr.find_element_by_class_name("page").find_element_by_class_name("next")
            dr.execute_script("arguments[0].click();", element)
            time.sleep(1)
            # print('点击下一页')

            new_page_num=dr.find_element_by_class_name("page").find_element_by_class_name("cur").text
            # print('new_page_num',new_page_num)

            if cur_page_num==new_page_num:
                flag = 1
                break

        except BaseException as e:
            print('点击下一页错误',e)
            break

    print(df_empty)
    if os.path.exists("ai数据.csv"):#存在追加,不存在创建
        df_empty.to_csv('ai数据.csv', mode='a', header=False, index=None, encoding='gb18030')
    else:
        df_empty.to_csv("ai数据.csv", index=False, encoding='gb18030')

    return k_index

 自动化爬取部分 这里按照全国14个热门城市爬取 若想爬取某个固定城市,需要把for循环去掉,去网站上找到对应城市编码,剪贴url即可<

基于Hadoop技术的大数据就业岗位数据分析 作者:梁天友 邱敏 来源:《电脑知识与技术》2021年第31期 基于Hadoop技术的大数据就业岗位数据分析全文共10页,当前为第1页。 基于Hadoop技术的大数据就业岗位数据分析全文共10页,当前为第1页。 基于Hadoop技术的大数据就业岗位数据分析全文共10页,当前为第2页。 基于Hadoop技术的大数据就业岗位数据分析全文共10页,当前为第2页。 基于Hadoop技术的大数据就业岗位数据分析全文共10页,当前为第3页。 基于Hadoop技术的大数据就业岗位数据分析全文共10页,当前为第3页。 基于Hadoop技术的大数据就业岗位数据分析全文共10页,当前为第4页。 基于Hadoop技术的大数据就业岗位数据分析全文共10页,当前为第4页。 摘要:大數据是一门新兴技术,为了进一步了解与之有关的就业岗位情况,通过使用Java程序爬取出真实的大数据就业岗位数据,再结合Hadoop技术进行统计分析,最后使用可视化技术呈现大数据技术岗位不同地区招聘的薪资、数量、职业技能需求等详细信息,为各应聘者做参考和决策分析。 关键词:大数据;岗位招聘;Hadoop;统计分析;可视化 中图分类号:TP391 文献标识码:A 基于Hadoop技术的大数据就业岗位数据分析全文共10页,当前为第5页。 文章编号:1009-3044(2021)31-0047-04 基于Hadoop技术的大数据就业岗位数据分析全文共10页,当前为第5页。 Big Data Employment Data Analysis Based on Hadoop Technology LIANG Tian-you, QIU Min (School of Information Engineering, Nanning University, Nanning 530200,China) Abstract: Big data is a new technology, in order to further understand the related employment situation, through the use of Java program climb out real big jobs data, combining the Hadoop technologies were analyzed, and finally using visualization techniques to present big data technology jobs in different area, the hiring salary, quantity, detailed information, such as professional skill requirements for the candidates for your reference and decision analysis. Key words: Big data; Job recruitment; Hadoop; Statistical analysis; visualization 据IBM统计,全球近90%的数据是在过去2年中生成的,每天都在增加2.5 EB(1 EB=1 024 PB)数据。其中,约有90%的数据是非结构化的。所以这些来自网络和云平台的大数据为价值创造和商业智能提供了新的机会。随着大数据的到来,大数据岗位人才稀缺,治理大数据技术问题成为政府和各公司的问题【1】。政府治理(government governance)主要管理政府大数据和利用政府大数据,收集突发公共安全、突发卫生健康、犯罪、自然灾害、恐怖主义、国防等,并且向社会输送大数据技术人才,根据教育部公布的2017-2020年普通高等学校本科专业备案和审批结果显示,获批新增"数据科学与大数据技术"专业的高校高达616所【2】。公司治理(corporation governance)以信息技术(information technology)治理,即IT治理为主,更新技术处理设备,招纳大数据技术人才。 在如此的大数据技术背景下各公司会把所需人才岗位发布到互联网上,求职者根据自身需求和技能对位各公司的岗位,而使用爬虫和大数据相关技能爬取、统计、分析出来的数据能够帮助求职者起到一个借鉴和决策的作用。 1研究数据及技术方法 本次研究以Java和Hadoop技术为基础,"大数据"为关键词,爬取某IT互联网招聘网站各公司的招聘信息到Hadoop分布式文件系统(HDFS)上,爬取信息包括地区、岗位名称、薪资、教育背景、经验要求、公司福利六个字段,对爬取的数据进行处理后存储在Hive数据仓库上,使用M
评论 75
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小崔的金箍棒

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

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

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

打赏作者

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

抵扣说明:

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

余额充值