300条数据,后续改了代码,把12个城市的 PHP 相关岗位的数据都抓下来了,有3500+条数据,慢慢爬吧,急不来。
像这样
二、数据清洗
2.1 校正发布日期
"time" : "发布于03月31日",
"time" : "发布于昨天",
"time" : "发布于11:31",
这里拿到的都是这种格式的,所以简单处理下
import datetime
from pymongo import MongoClient
db = MongoClient('127.0.0.1', 27017).iApp
def update(data):
return db.jobs_php.update_one({"_id": data['_id']}, {"$set": data})
# 把时间校正过来
def clear_time():
items = db.jobs_php.find({})
for item in items:
if not item['time'].find('布于'):
continue
item['time'] = item['time'].replace("发布于", "2017-")
item['time'] = item['time'].replace("月", "-")
item['time'] = item['time'].replace("日", "")
if item['time'].find("昨天") > 0:
item['time'] = str(datetime.date.today() - datetime.timedelta(days=1))
elif item['time'].find(":") > 0:
item['time'] = str(datetime.date.today())
update(item)
print('ok')
2.2 校正薪水以数字保存
"salary" : "5K-12K",
#处理成下面的格式
"salary" : {
"low" : 5000,
"high" : 12000,
"avg" : 8500.0
},
# 薪水处理成数字
def clear_salary():
items = db.jobs_php.find({})
for item in items:
if type(item['salary']) == type({}):
continue
salary_list = item['salary'].replace("K", "000").split("-")
salary_list = [int(x) for x in salary_list]
item['salary'] = {
'low': salary_list[0],
'high': salary_list[1],
'avg': (salary_list[0] + salary_list[1]) / 2
}
update(item)
print('ok')
2.3 根据 工作经验年限 划分招聘等级
# 设置招聘的水平
def set_level():
items = db.jobs_php.find({})
for item in items:
if item['workYear'] == '应届生':
item['level'] = 1
elif item['workYear'] == '1年以内':
item['level'] = 2
elif item['workYear'] == '1-3年':
item['level'] = 3
elif item['workYear'] == '3-5年':
item['level'] = 4
elif item['workYear'] == '5-10年':
item['level'] = 5
elif item['workYear'] == '10年以上':
item['level'] = 6
elif item['workYear'] == '经验不限':
item['level'] = 10
update(item)
print('ok')
这里有点坑的就是,一般要求经验不限
的岗位,需求基本都写在任职要求
里了,所以为了统计的准确性,这个等级的数据,后面会被舍弃掉。
2017-12-14 更新:
从后续的平均数据来看,这里的经验不限
,一般要求的是1-3年
左右,但是还是建议舍弃掉。
2.4 区分开<岗位职责>和<任职要求>
对于作者这个初学者来说,这里还没有什么好的方法,知道的同学,请务必联系作者,联系方式在个人博客里
so , i'm sorry.
为什么这两个不好划分出来呢?
因为这里填的并不统一,可以说各种花样,有的要求在前,职责在后,有的又换个名字区分。目前看到的关于要求的有['任职条件', '技术要求', '任职要求', '任职资格', '岗位要求']
这么多说法。然后顺序还不一样,有的要求在前,职责在后,有的又反之。
举个栗子
会基本的php编程!能够修改简单的软件!对云服务器和数据库能够运用!懂得微信公众账号对接和开放平台对接!我们不是软件公司,是运营公司!想找好的公司学习的陕西基本没有,要到沿海城市去!但是我们是实用型公司,主要是软件应用和更适合大众!
啥也不说的,这里可以认为这是一条脏数据
了。
不行,再举个栗子
PHP中级研发工程师(ERP/MES方向)
1、计算机或相关学科本科或本科以上学历;
2、php和Java script的开发经验。
3、Linux和MySQL数据库的开发经验;
5、有ERP、MES相关开发经验优先;
6、英语的读写能力;
7、文化的开放性;
我们提供
1、有趣的工作任务;
2、多元的工作领域;
3、与能力相关的收入;
4、年轻、开放并具有创造力的团队和工作氛围;
5、不断接触最新科技(尤其是工业4.0相关);
6、可适应短期出差(提供差补);
这个只有要求,没职责,还多了个提供,我乐个趣 ╮(╯▽╰)╭
所以,气的想骂人。
ok ,现在我们的数据基本成这样了
{
"_id" : ObjectId("5a30ad2068504386f47d9a4b"),
"city" : "苏州",
"companyShortName" : "蓝海彤翔",
"companySize" : "100-499人",
"education" : "本科",
"financeStage" : "B轮",
"industryField" : "互联网",
"level" :