写了个简单爬虫,分析 Boss 直聘自动驾驶岗位
两年前,朋友想知道 Boss 直聘上关于自动驾驶的岗位有哪些 ,于是,笔者写了一个简单的爬虫 crawler-boss ,将岗位的信息收集起来。
这篇文章,笔者想分享爬虫 crawler-boss 的设计思路。

1 基本原理 Selenium + chromedriver
对于很多动态渲染的网页而言,想要抓取它的数据,就需要对网页的 JS 代码以及 Ajax 接口等进行分析。
而当 JS 代码混乱,难以分析,Ajax 的接口又含有很多加密参数的时候,就非常难以直接找出规律,那么上述过程会花费大量的时间和精力。

上图中, Boss 直聘接口参数比较多,笔者并不想花太多时间研究这些参数,于是笔者选择了另一种方案: Selenium + chromedriver 。
Selenium 是 web 浏览器自动化测试的工具,它可以模拟用户与所有主流浏览器之间的交互,比如点击,输入,抓取,拖拽等等。
但是 Selenium 与网络爬虫又有千丝万缕的关系,由于现在的网页大多采用是JavaScript动态渲染,使得爬虫返回的结果可能与用户实际看到的网页并不一致。我们看到的网页可能是经过Ajax加载,或者是JavaScript以及其他算法计算后生成的。
因此,我们可以使用 Selenium 直接模拟浏览器运行,我们肉眼看到的是什么样,能够抓取的数据就是什么样。
2 安装 chromedriver
WebDriver 是 Selenium 的核心组件 , 负责控制浏览器进行各种操作。WebDriver 可以通过不同的驱动程序与不同的浏览器进行通信,比如 ChromeDriver、FirefoxDriver 等。
1、查看当前Google浏览器版本
打开Google浏览器,网址栏输入:chrome://settings/help

2、下载对应版本的chromedriver
对照你的版本下载,当你使用的是 Chrome 版本 115 或更高版本,就点最上面的链接:

找到你对应的版本,我这里是122.0.6261.129

下载完成之后,将文件解压后,拷贝到 /usr/local/bin/ 目录 。

安装完 chromedriver 后,Java 应用中添加如下依赖:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<version>3.141.59</version>
</dependency>
然后通过如下代码,测试环境是否 OK 。
public static void main(String[] args) {
WebDriver webDriver = new ChromeDriver();
webDriver.get("https://juejin.cn");
}
点击运行,如果打开了掘金网页说明环境配置成功。
3 流程分析
1、进入搜索页面 , 搜索框中输入‘自动驾驶’


2、搜索结果若出现登录浮窗,则关闭,将页面中职位列表通过 class 截取出来,保存到数据库


3、点击下一页



4 写到最后
当我们将 Selenium 作为爬虫工具时,尽管它有很多优点,但也存在明显的缺点。
Selenium 模拟浏览器动作,除了加载需要的数据外,还会加载图片、JS、CSS等不必要的内容,导致网络资源和计算资源消耗增加,爬取速度变慢,爬取规模受限。
因此,长期大规模使用 Selenium 作为生产工具不是一个明智的选择。
然而,如果只是想在个人电脑上快速抓取少量数据,Selenium 确实是一个非常方便的工具。
最后, crawler-boss 的源码实现非常简单,假如同学们感兴趣,可以关注公众号,回复 「爬虫」即可获取。
参考文档:
如果我的文章对你有所帮助,还请帮忙点赞、在看、转发一下,你的支持会激励我输出更高质量的文章,非常感谢!

写了个简单爬虫,分析 Boss 直聘自动驾驶岗位的更多相关文章
- 用BeautifulSoup简单爬取BOSS直聘网岗位
用BeautifulSoup简单爬取BOSS直聘网岗位 爬取python招聘 import requests from bs4 import BeautifulSoup def fun(path): ...
- python分析BOSS直聘的某个招聘岗位数据
前言 毕业找工作,在职人员换工作,离职人员找工作……不管什么人群,应聘求职,都需要先分析对应的招聘岗位,岗位需求是否和自己匹配,常见的招聘平台有:BOSS直聘.拉钩招聘.智联招聘等,我们通常的方法都是 ...
- Scrapy 爬取BOSS直聘关于Python招聘岗位
年前的时候想看下招聘Python的岗位有多少,当时考虑目前比较流行的招聘网站就属于boss直聘,所以使用Scrapy来爬取下boss直聘的Python岗位. 1.首先我们创建一个Scrapy 工程 s ...
- Python爬虫——Scrapy整合Selenium案例分析(BOSS直聘)
概述 本文主要介绍scrapy架构图.组建.工作流程,以及结合selenium boss直聘爬虫案例分析 架构图 组件 Scrapy 引擎(Engine) 引擎负责控制数据流在系统中所有组件中流动,并 ...
- Pyhton爬虫实战 - 抓取BOSS直聘职位描述 和 数据清洗
Pyhton爬虫实战 - 抓取BOSS直聘职位描述 和 数据清洗 零.致谢 感谢BOSS直聘相对权威的招聘信息,使本人有了这次比较有意思的研究之旅. 由于爬虫持续爬取 www.zhipin.com 网 ...
- scrapy——7 scrapy-redis分布式爬虫,用药助手实战,Boss直聘实战,阿布云代理设置
scrapy——7 什么是scrapy-redis 怎么安装scrapy-redis scrapy-redis常用配置文件 scrapy-redis键名介绍 实战-利用scrapy-redis分布式爬 ...
- 基于‘BOSS直聘的招聘信息’分析企业到底需要什么样的PHP程序员
原文地址:http://www.jtahstu.com/blog/scrapy_zhipin_php.html 基于'BOSS直聘的招聘信息'分析企业到底需要什么样的PHP程序员 标签(空格分隔): ...
- 爬虫系列---scrapy post请求、框架组件和下载中间件+boss直聘爬取
一 Post 请求 在爬虫文件中重写父类的start_requests(self)方法 父类方法源码(Request): def start_requests(self): for url in se ...
- iOS开发之功能模块--高仿Boss直聘的常用语的开发
首先上Boss直聘的功能界面截图,至于交互请读者现在Boss直聘去交互体验: 本人的公司项目要高仿Boss直聘的IM常用语的交互功能,居然花费了我前后17个小时完成,这回自己测试了很多遍,代码 ...
- 打造IP代理池,Python爬取Boss直聘,帮你获取全国各类职业薪酬榜
爬虫面临的问题 不再是单纯的数据一把抓 多数的网站还是请求来了,一把将所有数据塞进去返回,但现在更多的网站使用数据的异步加载,爬虫不再像之前那么方便 很多人说js异步加载与数据解析,爬虫可以做到啊,恩 ...
随机推荐
- 记录一则exachk进程占用大量CPU资源
有Exadata客户在进行exachk巡检之后反馈,发现系统中,exachk进程占用了大量CPU资源. 了解之前的变更,只是巡检之前升级了AHF,然后进行标准的exachk巡检. 现象: 目前机器整体 ...
- FireDac 连接 SQL SERVER 2014 - LocalDB
易博龙官方的文档没有更新,官方的文档只能连接local-db2012 微软官方关于local-db 2012的描述 如下: 但是现在我开始使用SQL SERVER LOCAL-DB 2014了,因为今 ...
- DbgridEh表格框的【可连续点击两次编辑设置,和不允许点击两次编辑的设置】
- Ubuntu 22.04 Samba 安装和配置
安装 安装 sudo apt install samba 检查服务状态 systemctl status smbd --no-pager -l 检查是否启用(开机自启动) systemctl is-e ...
- Vue+SpringBoot+ElementUI实战学生管理系统-10.学生管理模块
1.章节介绍 前一篇介绍了教师管理模块,这一篇编写学生管理模块,需要的朋友可以拿去自己定制.:) 2.获取源码 源码是捐赠方式获取,详细请QQ联系我 :)! 3.实现效果 学生列表 修改学生 4.模块 ...
- Redis原理再学习01:数据结构-跳跃表skiplist
跳跃表skiplist 简介 你一定比较好奇Redis里面的 sorted set 是怎么实现的,底层到底是什么?它的排序功能就是用到了这个skiplist-跳跃表. 什么是跳跃表? 跳跃表可以看做是 ...
- IDEA git分支回退指定的历史版本
https://blog.csdn.net/woshi1226a/article/details/86664159
- Java JVM——6.本地方法接口
本地方法接口 什么是本地方法? 简单地讲,一个 Native Method 就是一个Java调用非Java代码的接囗.一个 Native Method 是这样一个Java方法:该方法的实现由非Java ...
- SpringBoot Starter大全
spring Boot应用启动器基本的一共有44种,具体如下 1)spring-boot-starter 这是Spring Boot的核心启动器,包含了自动配置.日志和YAML. 2)spring-b ...
- C/C++ 的 指针/引用 传参
#include <stdio.h> //指针传值 void addOne(int *a) { printf("%8p\n",a); *a = *a+1; } //引用 ...