golang简单爬虫Demo

栏目: Go · 发布时间: 5年前

内容简介:看完golang的文档,写个爬虫练手,记录下学习过程。项目地址:目标站点是字段9个,如下所示:

看完golang的文档,写个爬虫练手,记录下学习过程。项目地址: https://github.com/gushasha/boss-jobs

目标

目标站点是 Boss直聘 ,以成都为例,爬取招聘信息,录入本地数据库。

字段9个,如下所示:

golang简单爬虫Demo

招聘信息字段示例

分析目标站点

url地址分析

进入boss直聘首页,城市切换为“成都”(可自行选择),选择热门职位“Java”(可自行填写或选择)。则跳转到新页面,地址为: https://www.zhipin.com/c101270100/?query=Java&industry=&position= ,其中:

c101270100
query=java

分页分析

页面最底部的分页栏,点击页码"2"可以看到页面跳转到 https://www.zhipin.com/c101270100/?query=Java&page=2&ka=page-2 ,多了一个参数 page=2 。页码部分审查元素,如下图:

golang简单爬虫Demo

页码审查元素

页码规律为,参数page递增1。如何得知最后一页呢?

点击下页...下页..., 直到点不动(也可手动修改url参数的页码快速定位),审查元素,“下一页的图标” class 为disabled。因此,可以通过page内的最后一个a标签的class判断是否为最后一页。

<div class="page">
        <a href="/c101270100/?query=Java&page=9" ka="page-prev" class="prev"></a>
        <a href="/c101270100/?query=Java&page=1" ka="page-1">1</a>
        <span>...</span>
        <a href="/c101270100/?query=Java&page=8" ka="page-8">8</a>
        <a href="/c101270100/?query=Java&page=9" ka="page-9">9</a>
        <a href="javascript:;" class="cur" ka="page-cur">10</a>
        <!-- 注意:最后一页的页面,page-next 的class为 disabled -->
        <a href="javascript:;" ka="page-next" class="next disabled"></a>
</div>

安装启动项目

// 拉取项目代码
go get -u -v github.com/gushasha/boss-jobs

// govendor安装包和依赖
cd $GOPATH/src/github.com/gushasha/boss-jobs
govendor sync

// 修改配置文件
// 修改 `boss_jobs/conf/init.go`中的配置

// 创建数据库`spiders`,数据表`spiders_boss_jobs`
// 表结构在 `boss-jobs/docs`中

// 启动
go run main.go

// 进入数据库,查看
SELECT * FROM `spiders`.`spiders_boss_jobs`;

项目目录

$GOPATH/src/github.com/gushasha/boss-jobs/
|____docs
| |____spiders_boss_jobs.sql
|____main.go
|____models
| |____jobs.go
| |____model.go
|____parse
| |____jobs.go
|____vendor
| |____vendor.json

项目用到的包

github.com/PuerkitoBio/goquery
github.com/jinzhu/gorm

初始化项目数据库

新建 spiders 数据库,编码为 utf8_general_ci ,在 spiders 数据库下新建表 spiders_boss_jobs

CREATE TABLE `spiders_boss_jobs` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `jid` varchar(255) NOT NULL DEFAULT '' COMMENT '第三方平台上的ID:jobID',
  `job_type` varchar(30) NOT NULL COMMENT '工作类型',
  `title` varchar(255) NOT NULL DEFAULT '' COMMENT '标题',
  `salary_range` varchar(255) NOT NULL DEFAULT '' COMMENT '薪资范围',
  `work_years` varchar(255) DEFAULT '' COMMENT '工作年限',
  `education` varchar(255) DEFAULT '' COMMENT '学历要求',
  `company_name` varchar(255) DEFAULT '' COMMENT '公司名称',
  `company_address` varchar(255) NOT NULL DEFAULT '' COMMENT '公司地址',
  `company_label` varchar(255) DEFAULT '' COMMENT '公司类型',
  `financing_stage` varchar(255) DEFAULT '' COMMENT '融资阶段',
  `company_employees_count` varchar(255) DEFAULT '' COMMENT '公司规模-员工人数',
  `create_time` int(10) unsigned DEFAULT '0',
  `update_time` int(10) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uni_jid` (`jid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT "boss招聘信息表";

参考资料


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

欲罢不能

欲罢不能

[美] 亚当·奥尔特 / 闾佳 / 机械工业出版社 / 2018-4-1 / 59.00元

全面揭秘和解决“行为上瘾”的奠基之作 美国亚马逊分类图书畅销榜第一名 行为上瘾是什么?诱人上瘾的体验是如何设计出来的? 如何远离行为上瘾?如何用行为上瘾做些好事? ◆ 内容简介 ◆ 欢迎来到“行为上瘾”的时代! 我们中近半数人至少有一种“行为上瘾”:无时无刻盯着手机,不断刷朋友圈,通宵追看电视剧集,没日没夜打游戏,频繁查看邮件,用太多时间工作…… 而那些生......一起来看看 《欲罢不能》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具