在过几个月又是一年一度的毕业生求职时间了,这时候都需要往各个网站各个平台投递简历,这时候一份好的简历很重要,找对方向也很重要。这里我爬取了拉勾网30页关键字为python,应届本科生的岗位信息,然后再对数据处理,保存,可视化。
爬取数据的方法还是使用selenium的方法,将爬取到的数据保存到文本中,然后在提取文本的数据做其他操作。
具体代码:
from selenium import webdriver
import time
import os
import requests
path = '驱动地址'
browser = webdriver.Chrome(executable_path=path)
url = 'https://www.lagou.com/jobs/list_python/p-city_' \
'0?px=default&gx=%E5%85%A8%E8%81%8C&gj=&xl=%E6%9C%' \
'AC%E7%A7%91&isSchoolJob=1#filterBox'
#网址
browser.get(url)
time.sleep(10)
zwlist = []
shumu = 0
inum = 0
while inum<30:
li_path = '//*[@id="s_position_list"]/ul/li'
zw_list = browser.find_elements_by_xpath(li_path)
for i in zw_list:
zw = {}
zw['数目'] = shumu
shumu+=1
zw_name = i.get_attribute('data-positionname')
zw['职位名'] = zw_name
cname = i.get_attribute('data-company')
zw['公司名'] = cname
gz = i.get_attribute('data-salary')
zw['工资'] = gz
fb_time = i.find_element_by_class_name("format-time").text
zw['发布时间'] = fb_time
wz = i.find_element_by_class_name("add").text
zw['位置'] = wz
zwlist.append(zw)
xiajn = i.find_element_by_class_name("list_item_bot")
jn = xiajn.find_element_by_class_name("li_b_l").text
zw['技能要求'] = jn
np = browser.find_element_by_class_name("pager_next").click()
time.sleep(5)
inum+=1
with open('拉钩python职位.txt','w',encoding='utf-8')as f:
for i in zwlist:
for j in i.keys():
f.write(j + ':' + str(i[j]) + ' ')
f.write('\n')
browser.close()
将数据提取出来后再将数据保存到文本里,这里的话就是文本保存的时候需要将编码模式改成utf-8.
效果:
然后将数据可视化,这里提取了岗位的位置信息,这样就可以知道哪个地方需求python相关工作的数量了。
代码:
allzw = []
with open('拉钩python职位.txt','r',encoding='utf-8')as f:
x_list = f.readlines()
for i in range(len(x_list)):
x_list[i] = x_list[i].replace(' \n','')
x = x_list[i].split(' ')
for i in range(len(x)):
x[i] = x[i].split(':',1)
allzw.append(dict(x))
wz_list = []
for i in allzw:
wz_list.append(i['位置'])
for i in range(len(wz_list)):
wz_list[i] = wz_list[i].replace('[','').replace(']','')
wz_list[i] = wz_list[i][:2]
d = set(wz_list)
wz_shumu = []
for i in d:
wznum = 0
for j in wz_list:
if j == i:
wznum+=1
wz_shumu.append(wznum)
from pyecharts import options as opts
from pyecharts.charts import Geo
def geo_base() -> Geo:
c = (
Geo()
.add_schema(maptype="china")
.add("python职位数", [list(z) for z in zip(d, wz_shumu)])
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(
visualmap_opts=opts.VisualMapOpts(),
title_opts=opts.TitleOpts(title="python职位分布表"),
)
)
return c
c = geo_base()
c.render()
数据可视化这里使用的是pycharts库,算是比较好看的一种数据可视化的方法。
效果:
两种格式的地图帮助我们这样可以直观的看出,北京广州上海深圳等地的python需求比较大。
将这些岗位需要的技能要求做成词云:
词云代码:
alljn = []
with open('拉钩python职位.txt','r',encoding='utf-8')as f:
x_list = f.readlines()
for i in range(len(x_list)):
x_list[i] = x_list[i].replace(' \n','')
x = x_list[i].split(' ')
for i in range(len(x)):
x[i] = x[i].split(':',1)
alljn.append(dict(x))
jn_list = []
jn = ''
for i in alljn:
jn_list.append(i['技能要求'])
for i in range(len(jn_list)):
jn = jn+jn_list[i]
print(jn)
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import numpy as np
fronpath = '字体的位置'
wordcloud = WordCloud(background_color='white',scale=5,font_path=fronpath).generate(jn)
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
wordcloud.to_file('shuju.png')
结果:
这样你就可以清晰的看出你所需要掌握的技能还有那些。
还有对薪酬,福利等等的数据都可以去可视化它,更加方便你对职业的选择。