前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python---爬取拉勾网

python---爬取拉勾网

作者头像
sjw1998
发布2019-09-28 12:44:09
7260
发布2019-09-28 12:44:09
举报
文章被收录于专栏:孤独的S孤独的S

在过几个月又是一年一度的毕业生求职时间了,这时候都需要往各个网站各个平台投递简历,这时候一份好的简历很重要,找对方向也很重要。这里我爬取了拉勾网30页关键字为python,应届本科生的岗位信息,然后再对数据处理,保存,可视化。

爬取数据的方法还是使用selenium的方法,将爬取到的数据保存到文本中,然后在提取文本的数据做其他操作。

具体代码:

代码语言:javascript
复制
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相关工作的数量了。

代码:

代码语言:javascript
复制
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需求比较大。

将这些岗位需要的技能要求做成词云:

词云代码:

代码语言:javascript
复制
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')

结果:

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 孤独的S 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档