golang简单爬虫Demo

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

内容简介:看完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招聘信息表";

参考资料


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

查看所有标签

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

Artificial Intelligence

Artificial Intelligence

Stuart Russell、Peter Norvig / Pearson / 2009-12-11 / USD 195.00

The long-anticipated revision of this #1 selling book offers the most comprehensive, state of the art introduction to the theory and practice of artificial intelligence for modern applications. Intell......一起来看看 《Artificial Intelligence》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具