/51job

Golang:抓取前程无忧51job的go爬虫网站,支持离线和在线,支持导出简历,采用websocket交双工前后端日志打通,已经改版弃用,可观摩代码学习,仅供参考,获取数据已加密.

Primary LanguageGo

#此项目已经弃用,因为51改版了,参数变了,需要调参数....

项目名:pikapika

时间:2015.5.27周五

需求说明:

简历爬虫需求。

定时根据若干关键字对51jobs进行简历抓取,简历数据进行保存,方便HR以离线形式进行检索/查看。Web端展示暂时无需求。


解决方案:

1.模拟加载登陆页面链接,提取隐藏字段,输入用户名/验证码等模拟登陆,保存cookie。

2.模拟加载搜索最终页,更新cookie,提取隐藏字段,构造参数。

3.接2,url携带参数进行模拟加载搜索最终页,得到搜索列表,更新cookie。搜索列表数据信息可存入数据库。

4.接3,提取搜索列表简历链接及隐藏字段,进行模拟加载简历详情页,对数据进行提取存入数据库。

 

难点:

1.只能单用户登陆,需要写强制下线

2.反爬虫:严格验证报文头

3.反爬虫:Cookie时刻更新

4.反爬虫:页面访问有顺序,每次都会产生隐藏字段

5.反爬虫:速度不能过快,故不能用并发


记录总结:

1.51job爬虫项目中Go语言进阶成功,熟练程度飙升,成为熟悉语言。

2.51job爬虫项目开发完毕,解决各种开发难题,更加熟悉Go语言标准库及网络协议。

3.51job爬虫项目程序成果:自动保存为本地文件,不按关键字去重,按时间/关键字/页数/排位为文件夹进行保存,方便HR直接查看。其次自动去重存入数据库,实现可持续的简历保存。一次可抓取3000人简历,且智能强制下线/容错处理/被封解决方案。

4.数据库数据仍待输出可视化,但HR暂无需求,只需本地文件即可。数据库中数据仍有待挖掘。


介绍

皮卡丘,十万伏特! pikapika,振奋人心的口号! 主要对各种招聘网站进行简历爬取,进行存储整理优化。

你有才你就来!

这个项目是因为HR想要看简历 而且还需要很多简历

进展:

一期:51job 2016/5

PikaPika部署说明

软件要求

go环境 1.6 beego框架1.6 mysql数据库(建议数据库遵循**-北京时间)

部署顺序:

1.设置项目路径

GOPATH="/home/username/path"

2.进入路径拉下项目

cd  /home/username/path
git clone https://www.github.com/hunterhug/51job

3.进入51job/sh 运行init.sh补充外围包

./init.sh

4.进入51job/model将51job.sql导入数据库(可以忽略,因为开启服务时自动建表,但是可能出现问题)

开启爬虫服务

6.进入51job/server,运行webserver.go开启爬虫服务,端口默认8099,可以更改

go run webserver.go

或者

go build webserver.go
./webserver

配置账户密码51job/pika/args.go

var companyname=""
var userName = ""
var password = ""

配置文件在51job/cons/cons.go

//数据库配置
const (
	//数据库账号:数据库密码@tcp(数据库ip:端口号)/数据库名?编码等
	Db = "root:112344@tcp(localhost:3306)/beego_blog?charset=utf8&loc=Local"
	//数据库日志
	LogPath = "../log/db.log"
	//开启日志?
	OpenDbLog = false
	//用户头像保留地
	ImagePath = "../data/img/"
)

默认爬虫日志不保存在本地,如果需要保存在本地,请打开51job/log/log.go

// 保存爬虫日志到本地?
var openlog = false

开启网站服务

7.开启小蜜蜂,安装bee工具

go install github.com/beego/bee
cd 51job/web
bee run

如果小蜜蜂安装失败,请按照以下操作

cd 51job/web
go build main.go
./main

配置文件在51job/web/conf/app.conf

httpaddr = "127.0.0.1" //地址
httpport = 8088         //端口
mysqluser = "root"
mysqlpass = "45454"
mysqlurls = "127.0.0.1"
mysqlport = 3306
mysqldb   = "51job"
pikapika="127.0.0.1:8099" //爬虫控制台地址

请自行修改

访问链接

http://localhost:8099/ 爬虫控制台

http://localhost:8088/ 网站