python---爬取拉勾网

在过几个月又是一年一度的毕业生求职时间了,这时候都需要往各个网站各个平台投递简历,这时候一份好的简历很重要,找对方向也很重要。这里我爬取了拉勾网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---爬取拉勾网_第1张图片

 

然后将数据可视化,这里提取了岗位的位置信息,这样就可以知道哪个地方需求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---爬取拉勾网_第2张图片

两种格式的地图帮助我们这样可以直观的看出,北京广州上海深圳等地的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')

 

结果:

python---爬取拉勾网_第3张图片

 

这样你就可以清晰的看出你所需要掌握的技能还有那些。

还有对薪酬,福利等等的数据都可以去可视化它,更加方便你对职业的选择。

 

 

你可能感兴趣的:(python,拉钩,爬虫)