0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python拉勾网数据采集与可视化

马哥Linux运维 来源:未知 作者:邓佳佳 2018-03-13 14:18 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

全文简介

本文是先采集拉勾网上面的数据,采集的是Python岗位的数据,然后用Python进行可视化。主要涉及的是爬虫&数据可视化的知识。

爬虫部分

先用Python来抓取拉勾网上面的数据,采用的是简单好用的requests模块。主要注意的地方是,拉勾网属于动态网页,所以会用到浏览器的F12开发者工具进行抓包。抓包以后会发现,其实网页是一个POST的形式,所以要提交数据,提交的数据如下图:

真实网址是:

https://www.lagou.com/jobs/positionAjax.jsonneedAddtionalResult=false&isSchoolJob=0

在上图也可以轻松发现:kd是查询关键词,pn是页数,可以实现翻页。

代码实现

import requests # 网络请求

import re

import time

import random

# post的网址

url = 'https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false&isSchoolJob=0'

# 反爬措施

header = {'Host': 'www.lagou.com',

'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36',

'Accept': 'application/json, text/javascript, */*; q=0.01',

'Accept-Language': 'zh-CN,en-US;q=0.7,en;q=0.3',

'Accept-Encoding': 'gzip, deflate, br',

'Referer': 'https://www.lagou.com/jobs/list_Python?labelWords=&fromSearch=true&suginput=',

'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',

'X-Requested-With': 'XMLHttpRequest',

'X-Anit-Forge-Token': 'None',

'X-Anit-Forge-Code': '0',

'Content-Length': '26',

'Cookie': 'user_trace_token=20171103191801-9206e24f-9ca2-40ab-95a3-23947c0b972a; _ga=GA1.2.545192972.1509707889; LGUID=20171103191805-a9838dac-c088-11e7-9704-5254005c3644; JSESSIONID=ABAAABAACDBABJB2EE720304E451B2CEFA1723CE83F19CC; _gat=1; LGSID=20171228225143-9edb51dd-ebde-11e7-b670-525400f775ce; PRE_UTM=; PRE_HOST=www.baidu.com; PRE_SITE=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DKkJPgBHAnny1nUKaLpx2oDfUXv9ItIF3kBAWM2-fDNu%26ck%3D3065.1.126.376.140.374.139.129%26shh%3Dwww.baidu.com%26sht%3Dmonline_3_dg%26wd%3D%26eqid%3Db0ec59d100013c7f000000055a4504f6; PRE_LAND=https%3A%2F%2Fwww.lagou.com%2F; LGRID=20171228225224-b6cc7abd-ebde-11e7-9f67-5254005c3644; index_location_city=%E5%85%A8%E5%9B%BD; TG-TRACK-CODE=index_search; SEARCH_ID=3ec21cea985a4a5fa2ab279d868560c8',

'Connection': 'keep-alive',

'Pragma': 'no-cache',

'Cache-Control': 'no-cache'}

for n in range(30):

# 要提交的数据

form = {'first':'false',

'kd':'Python',

'pn':str(n)}

time.sleep(random.randint(2,5))

# 提交数据

html = requests.post(url,data=form,headers = header)

# 提取数据

data = re.findall('{"companyId":.*?,"positionName":"(.*?)","workYear":"(.*?)","education":"(.*?)","jobNature":"(.*?)","financeStage":"(.*?)","companyLogo":".*?","industryField":".*?","city":"(.*?)","salary":"(.*?)","positionId":.*?,"positionAdvantage":"(.*?)","companyShortName":"(.*?)","district"',html.text)

# 转换成数据框

data = pd.DataFrame(data)

# 保存在本地

data.to_csv(r'D:Windows 7 DocumentsDesktopMyLaGouDataMatlab.csv',header = False, index = False, mode = 'a+')

注意:抓取数据的时候不要爬取太快,除非你有其他的反爬措施,比如更换IP等,另外不需登录,我在代码加入了time模块,用于限制爬取速度。

数据可视化

下载下来的数据长成这个样子:

注意标题(也就是列明)是我自己添加的。

导入模块并配置绘图风格

import pandas as pd # 数据框操作

import numpy as np

import matplotlib.pyplot as plt # 绘图

import jieba # 分词

from wordcloud importWordCloud# 词云可视化

import matplotlib as mpl # 配置字体

from pyecharts importGeo# 地理图

mpl.rcParams["font.sans-serif"] = ["Microsoft YaHei"]

# 配置绘图风格

plt.rcParams["axes.labelsize"] = 16.

plt.rcParams["xtick.labelsize"] = 14.

plt.rcParams["ytick.labelsize"] = 14.

plt.rcParams["legend.fontsize"] = 12.

plt.rcParams["figure.figsize"] = [15., 15.]

注意:导入模块的时候其他都容易解决,除了wordcloud这个模块,这个模块我建议大家手动安装,如果pip安装的话,会提示你缺少C++14.0之类的错误,导致安装不上。手动下载whl文件就可以顺利安装了。

数据预览

# 导入数据

data = pd.read_csv('D:Windows 7 DocumentsDesktopMyLaGouDataPython.csv',encoding='gbk') # 导入数据

data.head()

read_csv路径不要带有中文

data.tail()

学历要求

data['学历要求'].value_counts().plot(kind='barh',rot=0)

plt.show()

工作经验

data['工作经验'].value_counts().plot(kind='bar',rot=0,color='b')

plt.show()

Python热门岗位

final = ''

stopwords = ['PYTHON','python','Python','工程师','(',')','/'] # 停止词

for n in range(data.shape[0]):

seg_list = list(jieba.cut(data['岗位职称'][n]))

for seg in seg_list:

if seg notin stopwords:

final = final + seg + ' '

# final 得到的词汇

工作地点

data['工作地点'].value_counts().plot(kind='pie',autopct='%1.2f%%',explode = np.linspace(0,1.5,25))

plt.show()

工作地理图

# 提取数据框

data2 = list(map(lambda x:(data['工作地点'][x],eval(re.split('k|K',data['工资'][x])[0])*1000),range(len(data))))

# 提取价格信息

data3 = pd.DataFrame(data2)

# 转化成Geo需要的格式

data4 = list(map(lambda x:(data3.groupby(0).mean()[1].index[x],data3.groupby(0).mean()[1].values[x]),range(len(data3.groupby(0)))))

# 地理位置展示

geo = Geo("全国Python工资布局", "制作人:挖掘机小王子", title_color="#fff", title_pos="left", width=1200, height=600,

background_color='#404a59')

attr, value = geo.cast(data4)

geo.add("", attr, value, type="heatmap", is_visualmap=True, visual_range=[0, 300], visual_text_color='#fff')

# 中国地图Python工资,此分布是最低薪资

geo

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Python Basics
    +关注

    关注

    0

    文章

    2

    浏览量

    1606

原文标题:Python拉勾网数据采集与可视化

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    实验室数据可视化监控管理平台方案

    报管理系统中,存在工作量大、效率低等问题,难以满足实验室精细化管理的需求。 对此,数之能提供工业数据可视化管理平台,能够接入各类PLC实现数据采集与存储,通过可视化
    的头像 发表于 04-27 16:40 126次阅读
    实验室<b class='flag-5'>数据</b><b class='flag-5'>可视化</b>监控管理平台方案

    3D系统可视化

    本身的深入描述和F-Theta透镜的应用示例。 光学系统的3D-可视化 VirtualLab Fusion提供的工具可以实现光学系统的3D可视化,因此可以用于检查元件的位置,以及快速了解系统内部的光
    发表于 03-30 09:25

    介质击穿过程的可视化:电压击穿试验仪中的高速数据采集与波形分析技术

    在绝缘材料介质击穿试验中,击穿过程的瞬时性与复杂性使得直观观察成为难题。高速数据采集与波形分析技术的应用,打破了这一局限,通过精准捕捉击穿全过程的电信号变化并转化为可视化波形,让原本不可见的介质击穿
    的头像 发表于 02-03 14:00 6380次阅读
    介质击穿过程的<b class='flag-5'>可视化</b>:电压击穿试验仪中的高速<b class='flag-5'>数据采集</b>与波形分析技术

    面包自动包装产线数据采集解决方案

    某企业从事各类面包糕点等食品的生产及销售工作,市场规模持续扩大。为应对产能提升的挑战,已经实现包装环节的自动,实现从开箱-套袋-装箱-称重-封箱的全过程。现要求将包装产线设备数据采集起来,对接到本地值班室中实现可视化展现,以提
    的头像 发表于 12-13 11:17 909次阅读
    面包自动<b class='flag-5'>化</b>包装产线<b class='flag-5'>数据采集</b>解决方案

    工业物联网可视化平台是什么?有什么功能?

    工业物联网可视化平台是基于物联网、大数据、人工智能等技术,将工业生产中的设备、系统、流程等数据以图形方式呈现,实现实时监控、智能分析与交互式管理的数字化工具。 其核心功能涵盖
    的头像 发表于 11-17 17:49 1522次阅读

    工业可视化平台是什么

    工业可视化平台是一种基于信息技术和可视化技术,将工业生产过程中的数据、信息、流程等以直观、动态的图形方式呈现,并实现交互式管理与分析的数字化工具。它通过整合工业物联网(IIoT)、大
    的头像 发表于 10-24 18:00 1282次阅读

    光伏电站可视化的实现

    实现光伏电站可视化,核心是在于通过直观的视觉界面,解决传统运维中低效巡检、数据孤岛、被动响应等痛点,从而提升运营效率并提供决策支持。这是一种有效的技术手段,通过数字孪生、三维建模、数据
    的头像 发表于 10-21 17:29 1416次阅读
    光伏电站<b class='flag-5'>可视化</b>的实现

    【产品介绍】Altair HyperView用于仿真和CAE分析的后处理和数据可视化

    详细的交互式3D数据可视化以及FEA和多体系统仿真结果的探索。轻松管理大型结果文件,并将数据转换为综合动画。HyperView的多学科查看器增强了用户对复杂仿真的
    的头像 发表于 09-19 17:02 1140次阅读
    【产品介绍】Altair HyperView用于仿真和CAE分析的后处理和<b class='flag-5'>数据</b><b class='flag-5'>可视化</b>

    数字孪生可视化系统构建行业数字智能管理生态!

    数字孪生可视化系统具备丰富的模型组件,包括二维平面组件及3D模型组件,可根据用户需求进行定制。数字孪生可视化系统在行业数字升级、数字管理中有着重要的意义,充分利用大
    的头像 发表于 09-19 11:45 917次阅读
    数字孪生<b class='flag-5'>可视化</b>系统构建行业数字<b class='flag-5'>化</b>智能管理生态!

    智慧用电安全解决方案:打造全流程可视化管控

    预警、可视管控”的闭环管理体系,其核心在于实现对电气安全风险的全流程、可视化、主动性管控。 一、 全域感知与数据采集可视化管控的数据基石
    的头像 发表于 09-04 16:17 966次阅读
    智慧用电安全解决方案:打造全流程<b class='flag-5'>可视化</b>管控

    宏集方案 | 如何进行产线高阶能耗数据的计算和可视化?

    可视化。02关键挑战与对策1HongraxIIoT能耗基础数据采集面对现场设备类型以及通讯协议的多样性,宏集eX700M系列HMI支持200+通讯协
    的头像 发表于 08-08 18:28 665次阅读
    宏集方案 | 如何进行产线高阶能耗<b class='flag-5'>数据</b>的计算和<b class='flag-5'>可视化</b>?

    智能工厂为什么需要数据采集物联网系统

    工厂实现数字、网络和智能的关键基础设施。以下是智能工厂需要数据采集物联网系统的核心原因: 一、实现生产过程的透明
    的头像 发表于 07-18 14:52 1277次阅读

    如何使用协议分析仪进行数据分析与可视化

    使用协议分析仪进行数据分析与可视化,需结合数据捕获、协议解码、统计分析及可视化工具,将原始数据转化为可解读的图表和报告。以下是详细步骤及关键
    发表于 07-16 14:16

    点胶机 PLC 数据采集与运维平台对接方案:Modbus/OPC UA 协议转换与云端可视化实现

    点胶机PLC数据采集到运维管理平台解决方案
    的头像 发表于 06-30 13:59 766次阅读
    点胶机 PLC <b class='flag-5'>数据采集</b>与运维平台对接方案:Modbus/OPC UA 协议转换与云端<b class='flag-5'>可视化</b>实现

    工业设备可视化管理系统是什么

    工业设备可视化管理系统是一种基于物联网(IoT)、大数据、云计算、数字孪生等技术,对工业设备的运行状态、性能参数、维护信息等进行实时监测、数据整合与可视化呈现的智能管理平台。它通过将复
    的头像 发表于 05-27 14:56 1379次阅读
    工业设备<b class='flag-5'>可视化</b>管理系统是什么