python 岗位数据分析
一.前言
前一段时间学习并写了一些网络爬虫,基于python的,通过网上找一些例子,爬到了很多数据,虽然说不能完全的突破反反爬技术,但是对于大多数反爬不强的网站来说,获取数据还是不难的,这些数据都是网上看的到的,爬虫只是将你所需要的数据集中起来,然而这大量的数据对于我们来说是没什么用的,我们要做的是从大量的数据中获取对我们有用的东西,要实现这一过程,就需要对数据进行数据分析与挖掘.
二.什么是数据分析与挖掘呢?
数据怎样才能对人有用呢?其实数据本身是没有用的,必须要经过一定的处理,比如你手机上的记步功能,通过对你的每一天进行记步,可以反映你的基本运动量(如果你没进行其他锻炼的话),还可以反映出你消耗的能量(卡路里,我手机上是这样),看你这一天的运动量达标情况,等等.这一过程就进行了初步的数据分析与挖掘,哪是数据?步数,哪是分析?这是一个用来获取结果的过程,手机里的程序自动帮你完成了,还有数据挖掘,通过分析得到的结果来预测其它方面的事情,挖掘出数据表面上展现不出来的东西(这往往是商机).
还有一个例子,沃尔玛超市的啤酒和尿布的故事,相信很多人都会说这两件事有什么联系,表面上是没有联系,然而通过对人们的购买数据分析,发现男人一般买尿布的时候,会同时购买啤酒,这样就发现了相互之间的联系,然后运用到实践中去,把啤酒和尿布摆放在一起就可以卖更多,这就是商机.
事实如此,当我们获取的数据非常大的时候,里面就包含了很多有用的信(information),然而往往这些数据十分杂乱,只有经过清洗和整合,得到信息.下一步我们需要从信息中将规律总结出来,发现他们之间的相互关系,称为知识(knowledge),然后运用知识去发现和预测未来
三.实战
由于我也是刚刚自学了一点数据分析与挖掘可视化,加上手头上有现成的数据,就简单的对python岗位的数据进行了分析,小试牛刀.本次数据分析纯属个人喜好,分析所得的结果和结论仅仅是本项目所得,不做参考!
1.数据获取
目标网站: 爬取的是前程无忧网
编程语言: 采用python语言编写(python35)
编辑器: pycharm
所需的库有: requests, pandas, time, lxml, re, matplotlib, pyecharts库
储存文件:csv文件,utf-8编码
import requests
import pandas as pda
from lxml import etree
def data(url):
urls = []
head = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
r = requests.get(url,headers=head)
r.encoding = r.apparent_encoding
selector = etree.HTML(r.text)
divs = selector.xpath('//*[@id="resultList"]/div')
for div in divs[3:53]:#信息所在的div[3]开始,每一页有50条
url1 = div.xpath('p/span/a/@href')#找到每一条信息的url
urls.append(url1[0])
indexdata(urls)#用来获取这一页中50条信息的详细信息
nexturl = selector.xpath('//*[@id="resultList"]/div[55]/div/div/div/ul/li[8]/a/@href')[0]
if nexturl:
data(nexturl)
#相当于翻页功能,判断下一页是否存在,如果存在就调用自身进行下一页的爬取.
def indexdata(urls):
item = {'职位':'','月薪':'','公司':'','学历':'','经验':'','地址':''}
head = {
'Cookie':'太长,省略',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
try:
for url in urls:
data = requests.get(url,headers=head)
data.encoding = data.apparent_encoding
selector = etree.HTML(data.text)
item['职位'] = selector.xpath('/html/body/div[3]/div[2]/div[2]/div/div[1]/h1/@title')[0]
item['月薪'] = selector.xpath('/html/body/div[3]/div[2]/div[2]/div/div[1]/strong/text()')[0]
item['