拉勾网爬虫与数据分析

本文介绍了如何使用Python爬取拉勾网50万条职位信息,涉及数据获取、清洗、分析和存储等多个步骤。通过SQL和Pandas进行数据去重,使用MySQL进行统计分析,结合SKlearn进行机器学习预处理,如TF-IDF转换。最后讨论了高维数据的处理策略和推荐职位的监督学习方法。
摘要由CSDN通过智能技术生成

拉勾网爬虫与数据挖掘

描述

爬取拉勾网50万条职位信息,进行数据清洗,简单的数据分析。流程图如下:
在这里插入图片描述

一个demo展示外观:

在这里插入图片描述

环境

操作系统

  • Ubuntu 16.04
  • mac OS 10.13.3

数据获取

  • Chrome
  • Python3

数据清洗

  • Excel
  • DataGrip
  • MySQL
  • phpMyAdmin
  • VScode
  • Anaconda Jupyter Notebook

数据分析

  • Excel
  • DataGrip
  • MySQL
  • phpMyAdmin
  • Anaconda Jupyter Notebook

数据可视化

  • HTML
  • Bootstrap
  • JavaScript
  • PHP
  • Echarts

Python模块

  • request
  • BeautifulSoup
  • Json
  • numpy
  • pandas
  • matplotlib
  • sklearn
  • pymysql

文件描述

  • get_position.py爬取拉勾网的爬虫程序
  • position_name.txt保存拉勾所有职位

数据获取

  • 使用Chrom分析拉勾源码,发现拉勾网使用Ajax请求数据如下图所示:
    在这里插入图片描述

  • 返回的数据是Json格式,处理起来非常方便,如下图所示:
    在这里插入图片描述

  • 需要的职位信息在object -> content -> positionResult -> result
    在这里插入图片描述

  • 使用多线程策略在mac中,校园网环境下进行职位详情页的爬取,并采用BeautifulSoup4提取出网页中需要的文字信息,以便后期大数据分析。处理速度达到了每秒20个职位。

  • 拉勾的反爬虫策略
    header不加session直接请求拉勾服务器,在请求数次之后就会被拒绝。手动注册账号登录拉勾网,利用Chrome开发工具将header的session后的字符串复制下载,加到程序的header中。这样再请求拉勾服务器就不会被拒绝了。注意超过一天之后session就失效了,登录账号更换一个新的session即可。

数据清洗

去重(SQL)

CREATE TABLE tmp2 as select min(id) as mid from tab3 group by 职位ID

CREATE TABLE lagou2 as SELECT * FROM lagou WHERE id in (SELECT mid from tmp2)

去重(Pandas)

  • 经过手工的查看有大量的重复值,使用pandasdrop_duplicates(subset=['positionId'])将重复的positionId去掉,只保留一行重复记录。
  • pandaspandas.DataFrame.to_csv()将去重的文件保存为csv文件
  • Excel 2016打开去重的csv文件,利用快速填充提取字段的4k-8k等工资字段,取平均值。工作年限使用同样的操作提取
  • 创建MySQL数据库以导入csv文件,创建数据库如下,这里用的是phpMyAdmin手动创建数据库字段,自动生成创建语句:
CREATE TABLE `LAGOU`.`position` ( `ID` INT NOT NULL AUTO_INCREMENT , `positionId` INT(10) NOT NULL , `positionLables` VARCHAR(20) NOT NULL , `positionName` VARCHAR(20) NOT NULL , `positionAdvantage` VARCHAR(20) NOT NULL , `firstType` VARCHAR(20) NOT NULL , `secondType` VARCHAR(20) NOT NULL , `workYear` INT(10) NOT NULL , `education` VARCHAR(20) NOT NULL , `salary` VARCHAR(20) NOT NULL , `isSchoolJob` VARCHAR(5) NOT NULL , `companyId` INT(10) NOT NULL , `companyShortName` VARCHAR(20) NOT NULL , `companyFullName` VARCHAR(20) NOT NULL , `companySize` VARCHAR(20) NOT NULL , `financeStage` VARCHAR(20) NOT NULL , `industryField` VARCHAR(20) NOT NULL , `industryLables` VARCHAR(20) NOT NULL , `createTime` VARCHAR(20) NOT NULL , `formatCreateTime` VARCHAR(20) NOT NULL , `city` VARCHAR(20) NOT NULL , `district` VARCHAR(20) NOT NULL , `businessZones&#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值