全文简介

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

爬虫部分

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

真实网址是:

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

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

代码实现

  1. import requests # 网络请求

  2. import re

  3. import time

  4. import random

  5. # post的网址

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

  7. # 反爬措施

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

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

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

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

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

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

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

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

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

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

  18. 'Content-Length': '26',

  19. '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',

  20. 'Connection': 'keep-alive',

  21. 'Pragma': 'no-cache',

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

  23. for n in range(30):

  24.    # 要提交的数据

  25.    form = {'first':'false',

  26.            'kd':'Python',

  27.            'pn':str(n)}

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

  29.    # 提交数据

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

  31.    # 提取数据

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

  33.    # 转换成数据框

  34.    data = pd.DataFrame(data)

  35.    # 保存在本地

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

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

数据可视化

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

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

导入模块并配置绘图风格

  1. import pandas as pd # 数据框操作

  2. import numpy as np

  3. import matplotlib.pyplot as plt # 绘图

  4. import jieba # 分词

  5. from wordcloud import WordCloud # 词云可视化

  6. import matplotlib as mpl  # 配置字体

  7. from pyecharts import Geo # 地理图

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

  9. # 配置绘图风格

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

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

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

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

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

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

数据预览

  1. # 导入数据

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

  3. data.head()

read_csv路径不要带有中文

  1. data.tail()

学历要求

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

  2. plt.show()

工作经验

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

  2. plt.show()

Python热门岗位

  1. final = ''  

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

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

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

  5.    for seg in seg_list:  

  6.        if seg not in stopwords:  

  7.                final = final + seg + ' '

  8. # final 得到的词汇

工作地点

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

  2. plt.show()

工作地理图

  1. # 提取数据框

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

  3. # 提取价格信息

  4. data3 = pd.DataFrame(data2)

  5. # 转化成Geo需要的格式

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

  7. # 地理位置展示

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

  9. background_color='#404a59')

  10. attr, value = geo.cast(data4)

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

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

  13. geo

正在学习Python爬虫的朋友不妨尝试下!

原文地址:https://zhuanlan.zhihu.com/p/34200452

Python拉勾网数据采集与可视化相关推荐

  1. 摩拜单车拉勾网php,Python拉勾网数据采集与可视化

    全文简介 本文是先采集拉勾网上面的数据,采集的是Python岗位的数据,然后用Python进行可视化.主要涉及的是爬虫&数据可视化的知识. 爬虫部分 先用Python来抓取拉勾网上面的数据,采 ...

  2. python计算商品总价_GitHub - ideaOzy/data_analysis: 基于Python的南京二手房数据采集及可视化分析...

    基于Python的南京二手房数据采集及可视化分析 1 内容简介 首先通过爬虫采集链家网上所有南京二手房的房源数据,并对采集到的数据进行清洗:然后,对清洗后的数据进行可视化分析,探索隐藏在大量数据背后的 ...

  3. 【毕业设计_课程设计】基于Python的南京二手房数据采集及可视化分析

    文章目录 0 项目说明 1 内容简介 2 应用技术介绍 3 数据采集 3.1 数据清洗 4 数据可视化 5 项目工程 0 项目说明 基于Python的南京二手房数据采集及可视化分析 提示:适合用于课程 ...

  4. Python疫情数据采集, 并做可视化展示

    前言 嗨喽!大家好,这里是魔王~ 本次目的 Python疫情数据采集, 并做可视化展示(数据采集, 数据分析) 知识点: 爬虫基本流程 requests 发送请求 re 正则表达式 json 结构化数 ...

  5. Python爬虫实战,pytesseract模块,Python实现拉勾网岗位数据可视化

    前言 利用Python实现BOOS直聘&拉勾网岗位数据可视化.废话不多说. 让我们愉快地开始吧~ 开发工具 Python版本:3.6.4 相关模块: requests模块 pyspider模块 ...

  6. 数据清洗python实现箱线图_GitHub - nonefirst/data_analysis: 基于Python的南京二手房数据采集及可视化分析...

    基于Python的南京二手房数据采集及可视化分析 1 内容简介 首先通过爬虫采集链家网上所有南京二手房的房源数据,并对采集到的数据进行清洗:然后,对清洗后的数据进行可视化分析,探索隐藏在大量数据背后的 ...

  7. python网页结构分析_GitHub - Vogdhsaj/data_analysis: 基于Python的南京二手房数据采集及可视化分析...

    基于Python的南京二手房数据采集及可视化分析 1 内容简介 首先通过爬虫采集链家网上所有南京二手房的房源数据,并对采集到的数据进行清洗:然后,对清洗后的数据进行可视化分析,探索隐藏在大量数据背后的 ...

  8. Python爬虫实战,pytesseract模块,Python实现BOOS直聘拉勾网岗位数据可视化

    前言 利用Python实现BOOS直聘&拉勾网岗位数据可视化.废话不多说. 让我们愉快地开始吧~ 开发工具 Python版本: 3.6.4 相关模块: requests模块 pyspider模 ...

  9. 基于python的电影爬虫可视化系统设计与实现

    大数据时代的到来,随着人们线上互动以及网络交易,用户的信息数据完全充斥着网络,个体对产品及服务的偏好可以从这些数据中完全体现出来,为商家以及平台提供了更好的发展方向.但是要人为获取数据库中的大量数据信 ...

最新文章

  1. 工业物联网为“两化融合”带来巨大推力
  2. eclipse远程连接hadoop_1个文件,3个类,mapreduce就是这么简单,动手搭建Hadoop(8)...
  3. 如何部署Zabbix服务端
  4. 统计学习方法读书笔记13-改进的迭代尺度法(优化算法)
  5. OPNFV发布首个版本Arno
  6. foobar2000_为MP3/flac嵌入歌词文件/封面编辑(提供eslyric插件下载)/信息标签编辑
  7. 乾颐堂现任明教教主(2014年课程)TCPIP协议详解卷一 第八节课笔记
  8. 麦克风和扬声器选型介绍
  9. 七代处理器装win7_Intel7代处理器 win10重装win7后无法安装显卡声卡驱动的解决方案 | A小可私人狗窝...
  10. $timeout、$interval和$watch用法
  11. 照片后期-lightroom常用调色常见参数解
  12. NANK南卡发布新品旗舰版——南卡护眼台灯Pro,延续“护眼”理念
  13. 实时操作系统和分时操作系统
  14. notify()和 notifyAll()有什么区别
  15. 移动端 自适应布局方案
  16. 深入理解vue slot插槽
  17. C语言程序设计(第二版) 主编:余贞侠 何钰娟 课后习题 代码题答案
  18. 7.6 曲面及其方程
  19. Python系列14-外星人入侵项目
  20. 【任务型对话系统】Database Search Results Disambiguation for Task-Oriented Dialog Systems

热门文章

  1. drools规则引擎可视化_一文看懂开源工作流引擎 Flowable「转」
  2. 3、JVM内存区域划分
  3. 移动大数据管理平台实践
  4. springboot+vue +医院门诊管理系统
  5. 用VScode配置Python开发环境
  6. linux版本高斯安装,RedHat Linux系统Gaussian高斯的安装与出错信息
  7. mysql导出数据代码_MySQL导入导出数据下令
  8. 西部数据旗下HGST固态硬盘拓宽VMware存储解决方案组合
  9. 音源分享:Spectrasonics Trilian贝司 优化整合版下载
  10. 新手必看!超有用的Apple Watch设置技巧分享