基于requests+pyecharts的前程无忧工作岗位可视化分析

今年大学毕业生预计突破900万大关。
每年毕业的大学生数量是在逐年增加。
根据教育部最新官方数据,预测明年也就是2021年我国高校毕业生人数将达到909万人,首次突破900万人!到2022年,我国高校毕业生人数将超过1000万人!目前我国14亿多人口中,只有1.7亿名大学生,再过10年左右时间,随着各高校毕业生进入社会的各行各业,我国总人口中就会有3亿多名大学生!

在这个大学生遍地走的时代,了解各种工作岗位的情况是非常有必要的。

什么是pyecharts?
pyecharts 是一个用于生成 Echarts 图表的类库。 

echarts 是百度开源的一个数据可视化 JS 库,主要用于数据可视化。pyecharts 是一个用于生成 Echarts 图表的类库。实际上就是 Echarts 与 Python 的对接。

使用 pyecharts 可以生成独立的网页,也可以在 flask , Django 中集成使用。

pyecharts0.5和1.0在用法上有较大差异,本项目用的是0.5版本

先安装所需的库
 

pip install pyecharts==0.5.11
pip install echarts-countries-pypkg
pip install pyecharts-snapshot
pip install bs4
pip install pandas
pip install jieba
pip install requests

项目组成 

本项目由两个py文件组成 ,最终结果如下

 

 

1.数据获取 

进入前程无忧官网,随便输入一个关键词,根据分析URL,不难发现他的命名规律

 获取数据并存为HTML文件

def getfront(page,item):       #爬取函数,page是页数,item是输入的字符串
     result = urllib.parse.quote(item)
     ur1 = result+',2,'+ str(page)+'.html'
     ur2 = 'https://search.51job.com/list/000000,000000,0000,00,9,99,'
     res = ur2+ur1
     a = urllib.request.urlopen(res)
     html = a.read().decode('gbk')
     html = html.replace('\\','')
     html = html.replace('[', '')
     html = html.replace(']', '')
     f=open('51job.html','w',encoding='gbk')
     f.write(html)
     f.close()
     # print(html)
     return html

 通过对HTML文件内容的分析,我们可以通过正则表达式获取其中有用的信息

def getInformation(html):
    reg = re.compile(r'\{"type":"engine_search_result","jt":"0".*?"job_href":"(.*?)","job_name":"(.*?)".*?"company_href":"(.*?)","company_name":"(.*?)","providesalary_text":"(.*?)".*?"updatedate":"(.*?)".*?,'
                     r'"companytype_text":"(.*?)".*?"jobwelf":"(.*?)".*?"attribute_text":"(.*?)","(.*?)","(.*?)","(.*?)","companysize_text":"(.*?)","companyind_text":"(.*?)","adid":""},',re.S)#匹配换行符
    items=re.findall(reg,html)
    print(items)
    return items

将获取到的信息存入XLS表格

for j in range(1, 6):  ##需要爬取的页数
    print("正在爬取"+item+"第" + str(j) + "页数据...")
    html = getfront(j,item)
    # print(html)
    for i in getInformation(html):  #将数据写入Excel表格
        # print(i)
        sheet1.write(number,0,number)
        sheet1.write(number,1,i[1])
        sheet1.write(number,2,i[3])
        sheet1.write(number,3,i[8])
        sheet1.write(number,4,i[6])
        sheet1.write(number,5,i[4])
        sheet1.write(number,6,i[10])
        sheet1.write(number,7,i[9])
        sheet1.write(number,8,i[12])
        sheet1.write(number,9,i[7])
        sheet1.write(number,10,i[5])
        number+=1
        excel1.save(item+".xls")
        time.sleep(0.3)

2.数据清洗 

 这时的数据我们还不能直接用,其中有空缺或者错位,工资单位也需要统一成万/月,也要筛除其中不符合我们预期的岗位信息,特别需要注意的是每进行一种处理,就要对表格进行重新排序,不然在下一次处理是会有序号缺失导致报错

data = pd.read_excel(item+'.xls')
result &
  • 5
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 21
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Drunkpoem

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

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

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

打赏作者

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

抵扣说明:

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

余额充值