当前位置: 首页 > 科技观察

15分钟,教你用Python爬取网站数据,用BI可视化分析!

时间:2023-03-14 21:01:29 科技观察

作为一个在数据行业打拼了两年多的数据分析师,虽然现在的收入还可以,但是每次一想到房价,男的还不到30岁,我就做不到求助犹豫~两年换了工作,一直从事大数据相关的行业。目前在一家公司担任BI工程师,主要工作是向业务部门出具报表和业务分析报告。回顾我过去的工作表现,还不错。通过自己的分析和多次汇报,解决了业务中的许多疑难杂症。领导是密不可分的。但是安逸久了,总会有一些莫名的恐慌,那么我的岗位未来还有多大的发展空间,十年后我又能成为什么样的人呢?你的收入有多少空间?一阵惆怅之后,我也就不再问路在何方,于是拿起我的“家伙”,花了一点时间爬取了智联招聘BI岗位的数据信息,做了分析。PS:使用的工具是Python+BI。数据分析的过程就像做饭一样。先是数据采集(买菜),然后是数据建模(配菜),数据清洗(洗菜),数据分析(做饭),数据可视化(摆盘上菜)。所以第一步是收集/选择数据。1、用Python爬取智联招聘职位信息(附源码)选择智联招聘,用Python爬取“BI工程师”的关键数据信息。这里也可以尝试爬取自己职位的关键词,比如“数据分析师”、“java开发工程师”等,F12分析调试后,数据以JSON形式存储,可以通过智联招聘提供的接口调用。然后我用Python对智联招聘网站的数据进行了分析,爬取了30页数据,将职位、公司名称、薪资、城市、行业、学历要求、工作年限等关键信息保存在一个CSV文件中。向下。附上完整的Python源码:importrequestsimportjsonimportcsvfromurllib.parseimporturlencodeimporttimedefsaveHtml(file_name,file_content):#将内容对象保存为html文件withopen(file_name.replace('/','_')+'.html','wb')asf:F。write(file_content)defGetData(url,writer):#分析并保存数据为CSV文件loads(data)dataList=jsondata['data']['results']#print(jsondata)fordicindataList:jobName=dic['jobName']#jobnamecompany=dic['company']['name']#companynamesalary=dic['salary']#salarycity=dic['city']['display']#cityjobtype=dic['jobType']['display']#industryeduLevel=dic['eduLevel']['name']#学历要求workingExp=dic['workingExp']['name']#工作经历print(jobName,company,salary,city,jobtype,eduLevel,workingExp)writer.writerow([jobName,company,salary,city,jobtype,eduLevel,workingExp])param={'start':0,'pageSize':60,'cityId':489,'workExperience':-1,'education':-1,'companyType':-1,'employmentType':-1,'jobWelfareTag':-1,'kw':'BIEngineer',#搜索关键词,可以根据需要爬取职位信息替换'kt':3,'lastUrlQuery':{"p":1,"pageSize":"60","jl":"681","kw":"python","kt":"3"}}#参数配置pages=range(1,31)#抓取1-30页数据out_f=open('test.csv','w',newline='')writer=csv.writer(out_f)writer.writerow(['jobName','company','salary','city','jobtype','eduLevel','workingExp'])forpinpages:#Autopageturningparam['start']=(p-1)*60param['lastUrlQuery']['p']=purl='https://fe-api.zhaopin.com/c/i/sou?'+urlencode(param)GetData(url,writer)time.sleep(3)#每隔3秒休眠一次,防止IP被封print(p)out_f.close()经过一番编译调试,代码运行成功,所有数据都爬取到了。本地CSV文件中总共保存了1800个项目。数据已爬取。具体想了解什么信息:各个城市对BI职位的需求和薪资水平;随着工作经验的加薪,具体有哪些高薪工作。可见分析的角度很多,而且在查看源数据后,还需要做大量的数据处理。最简单快捷的可视化方式自然是使用BI工具对数据进行清洗处理,呈现可视化。BI可以应对大部分场景的数据分析,尤其擅长无需建模的多维数据切片;甚至数据清洗环节也可以放在前端,通过筛选、新建计算公式等方式解决。***呈现可视化,设计数据报表。这里我使用FineBI来做这样的分析。FineBI的分析一般遵循这样的流程:连接/导入数据——数据处理/清洗(过滤、筛选、添加公式列)——探索性分析——数据可视化——上报。二、数据清洗与处理1、工资上下限切分:将CSV文件数据导入FineBI(新建数据链接,新建分析业务包,再导入这张excel表)。因为工资是以xxK-xxk的形式存储的(还有一些类似校招/工资面议的数据),我用FineBI新增了一个公式列(类似excel函数)来划分这些字符:工资下限(value):left(indexofarray(split(salary,"-"),1),find("K",INDEXOFARRAY(split(salary,"-"),1))-1)工资帽(包括K个字符):right(indexofarray(split(salary,"-"),2),len(salary)-find("K",indexofarray(split(salary,"-"),2))工资上限(值):left(salaryUpperlimit(text),find("K",salaryupperlimit(text))-1)这样就得到了每个职位的数值格式的薪水范围:2.脏数据清洗:浏览数据后,没什么大问题,但是我发现有一些类似BIM工程师的职位信息。这些应该是土木工程行业的工程师。这里我可以直接过滤掉(不包括“BIM”,不包括“bim”)。3、新增一列计算岗位平均数据,平均工资=(工资下限+工资上限)/2,可以得到每个岗位的平均工资。4.真实城市截取由于城市字段存储的数据是“城市-地区”格式,比如“上海-徐汇区”,为了方便分析各个城市的数据,最后新增一列“城市”截取“-”以前的真实城市数据。City:if(find("-",city)>0,left(city,find("-",city)-1),city)至此,18000多条数据清洗的差不多了,所有的配料准备好了。下面就可以正式开始用数据可视化做菜了。3.数据可视化数据可视化可以说是非常简单的,拖拽要分析的数据字段即可。但是这里我们需要了解一个使用finebi分析时的思路。常规上,我们用excel做分析或者做图表,先选择drillchart,然后设置series和values。这里没有级数和值的概念,只有横轴和纵轴。拖动任何字段,该字段将随该轴展开。至于图表,finebi会自动识别并推荐。在此,我以分析各城市平均工资/就业人数为例,简单向大家展示一下FineBI的可视化呈现过程。1.横轴扩展了“城市”字段,显示两种数据。首先是工资值,拖到纵轴,默认对数字段汇总求和。点击字段可以直接修改对该字段的计算、过滤等操作。本图来自官网,图中数据非本次分析数据,仅供参考2、再分析各城市BI岗位情况。将数据记录数指示器拖动到纵轴显示中。同理,可以修改字段名。为了区分两者,修改成折线图,倒序显示。同理,其他的图表也是这样操作的,想着显示什么样的数据,怎么显示,怎么处理数据。这很方便。其他图表不再一一描述。***,大概用了15分钟,一个完整的智联招聘网站-BI工程师岗位数据分析可视化报告就完成了~审美有限,只能这样了,其实这个FineBI也可以做出这样的效果。四、分析结果1、目前智联招聘网站上BI工程师岗位平均工资为13.46K(哭...存在平均工资较低的情况),主要工资区间在12-15K左右(会计)为27.07%)。相关职位需求总数为634(仅针对某日的招聘需求数据)。2、从城市岗位需求分布来看,BI工程师的需求主要集中在北京、上海、深圳、广州;各城市BI工程师平均工资,剔除岗位需求较少的城市,国内排名靠前的公司分别是深圳(14.72K)、上海(14.59K)、北京(14.51)、杭州(12.07K)、成都(11.13K)和广州(10.94K)。3、从工作年限平均工资和职位要求数量来看,工作5-10年的高级BI工程师平均工资可以达到20K以上(向高级BI工程师努力!!!平均1年以下工作经验计算的薪资)虽然薪资19K,但因为样本量只有3个,参考意义不大),工作需求年限大多为3-5年,平均工资是14.24K。4.从学历上看,***学历要求主要是本科/大专,本科和专科学历要求的平均工资分别是12.68K和11.97K(感觉差距不大,强技术实力可能是关键,对企业来说是最重要的),对博士、硕士的需求很少。5、看了一些高薪招聘公司,最好的能给30K~40K的薪资水平,主要是互联网和IT公司。悟道之后,突然有了奋斗的动力~知识就是财富,努力学习吧,少年!!!