LagouProject
概述
爬虫部分
爬取模块的代码为LagouSpider.py
使用selenium
库进行数据爬取, 爬取下来的数据以.csv
格式存于data/spider
目录
内容 | 描述 |
---|---|
job | 工作名称 |
money | 薪资情况 |
skill | 岗位需要的技能 |
ink | 公司名 |
area | 工作地点 |
jobDes | 工作描述 |
inkDes | 公司描述 |
预处理部分
预处理模块的代码为dataProcessing.py
读取目录data\spider
中的所有'.csv'数据, 对数据进行预处理, 将预处理结果保存于指定路径'data/processed'
内容 | 描述 |
---|---|
job | 工作名称 |
Low_wages | 最低薪资(k) |
Hight_wages | 最高薪资(k) |
Year_wages | 年薪(k) |
city | 工作地点 |
ink | 公司名 |
staff | 公司员工数量 |
JobDes | 工作描述 |
inkDes | 公司描述 |
工作推荐部分
工作推荐使用了多项式朴素贝叶斯模型使用技能需求对工作类别进行预测, 模型训练源码fitModel.py, 训练模型保存于model
目录下.
在recommendClass.py中, 对model
目录中的模型进行调用, 对输入技能进行工作类别预测.
在recommendJob.py中调用了recommendClass.py, 对用户所掌握的技能进行工作推荐.
使用
在使用前需要安装selenium
, pandas
, numpy
.
pip install selenium pandas numpy
需要安装相应的浏览器和匹配的浏览器驱动,本程序使用了chrome浏览器
,相应内核可以前往ChromeDriver下载对应的版本。
LagouSpider.py
login(url)
: 传入一个登录地址, 登录所需要的网页, 将返回一个登录后的浏览器对象.spider(driver, search, page, savePath)
: 传入登录后的浏览器对象, 搜索内容, 爬取的总页数和爬取的数据保存的路径. search 为列表类型, page 为 0 时将默认爬取最大页数.
示例:
searchClass = ['后端开发', '移动开发', '前端开发', '人工智能', '测试', '运维', 'DBA', '硬件开发']
page = 0
savePath = '../data/spider/'
driver = login('https://passport.lagou.com/login/login.html')
for i in searchClass:
spider(driver, i, page, savePath)
time.sleep(60)
print('全部数据爬取完毕')
driver.quit()
dataProcessing.py
process(dataPath, savePath)
: 传入需要预处理的数据所在路径和预处理完成数据所需要的保存路径.
示例:
savePath = '../data/processed/finalData.csv'
dataPath = '../data/spider/'
process(dataPath, savePath)
fitModel.py
-
fitModel(data, *tagInfo)
: 传入预处理好的数据, 可选传入数据类别参照表. 如果传入参照表, 将对测试数据随机选取一个进行模型预测测试. 最后会以列表的形式返回拟合好的词袋模型和多项式朴素贝叶斯模型. -
saveModel(models, savePath)
: 以列表的形式传入拟合好的模型, 和模型保存路径.
示例:
data = pd.read_csv('../data/processed/finalData.csv')
tagInfo = pd.read_csv("../data/processed/tagInfo.csv")
models = fitModel(data)
savePath = '../model/'
saveModel(models, savePath)
recommendClass.py
recommend(skill)
: 以字符串形式传入已掌握的技能, 将返回推荐的类别名.recommendTag(skill)
: 以字符串形式传入已掌握的技能, 将返回推荐的类别编号.
示例:
skill1 = ["html css vue javascript"]
skill2 = ["springboot java mysql"]
skill3 = ["Android"]
print(f"{skill1} ===> {recommend(skill1)}")
print(f"{skill2} ===> {recommend(skill2)}")
print(f"{skill3} ===> {recommend(skill3)}")
recommendJob.py
backTenJobs(*skill)
: 可选以字符串的形式传入技能, 将根据已掌握的技能推荐十个适合的工作. 如果不传入数据, 那么运行时将会让用户手动输入已掌握的技能.
示例:
backTenjobs("html css vue javascript")