写了个简单爬虫,收集 Boss 直聘自动驾驶岗位

开发 前端
架构Selenium 模拟浏览器动作,除了加载需要的数据外,还会加载图片、JS、CSS等不必要的内容,导致网络资源和计算资源消耗增加,爬取速度变慢,爬取规模受限。

朋友想知道 Boss 直聘上关于自动驾驶的岗位有哪些 ,于是,笔者写了一个简单的爬虫 crawler-boss ,将全国大城市相关岗位的信息收集起来。

这篇文章,笔者想分享爬虫 crawler-boss 的设计思路。

图片图片

一、基本原理 Selenium + chromedriver

对于很多动态渲染的网页而言,想要抓取它的数据,就需要对网页的 JS 代码以及 Ajax 接口等进行分析。

而当 JS 代码混乱,难以分析,Ajax 的接口又含有很多加密参数的时候,就非常难以直接找出规律,那么上述过程会花费大量的时间和精力。

图片图片

上图中, Boss  直聘接口参数比较多,笔者并不想花太多时间研究这些参数,于是笔者选择了另一种方案:Selenium + chromedriver。

Selenium是 web 浏览器自动化测试的工具,它可以模拟用户与所有主流浏览器之间的交互,比如点击,输入,抓取,拖拽等等。

由于网页大多采用是 JavaScript 动态渲染,使得爬虫返回的结果可能与用户实际看到的网页并不一致。我们看到的网页可能是经过 Ajax 加载,或者是JavaScript以及其他算法计算后生成的。

因此,我们可以使用 Selenium直接模拟浏览器运行,我们肉眼看到的是什么样,能够抓取的数据就是什么样。

二、安装 chromedriver

WebDriver 是 Selenium 的核心组件 , 负责控制浏览器进行各种操作。WebDriver 可以通过不同的驱动程序与不同的浏览器进行通信,比如 ChromeDriver、FirefoxDriver 等。

1、查看当前Google浏览器版本

打开Google浏览器,网址栏输入:chrome://settings/help

图片图片

2、下载对应版本的chromedriver

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

https://chromedriver.chromium.org/downloads/

图片图片

找到你对应的版本,我这里是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");
}

点击运行,如果打开了掘金网页说明环境配置成功。

三、流程分析

1、进入搜索页面 , 搜索框中输入‘自动驾驶’。

图片图片

图片图片

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

图片图片

图片图片

3、点击下一页

图片图片

图片图片

四、爬虫演示

执行完成之后,职位记录表新增了接近 2000 条记录。

图片图片

五、写到最后

当我们将 Selenium 作为爬虫工具时,尽管它有很多优点,但也存在明显的缺点。

Selenium 模拟浏览器动作,除了加载需要的数据外,还会加载图片、JS、CSS等不必要的内容,导致网络资源和计算资源消耗增加,爬取速度变慢,爬取规模受限。

因此,长期大规模使用 Selenium 作为生产工具不是一个明智的选择。

然而,如果只是想在个人电脑上快速抓取少量数据,Selenium 确实是一个非常方便的工具。

最后, crawler-boss 的源码实现非常简单,假如同学们感兴趣,可以关注公众号,回复 「爬虫」即可获取。

参考文档:

https://zhuanlan.zhihu.com/p/137710454

https://juejin.cn/post/7284318118993068051

责任编辑:武晓燕 来源: 勇哥Java实战
相关推荐

2024-01-16 09:28:09

智能汽车

2015-07-02 14:07:19

Boss直聘

2022-10-27 10:18:25

自动驾驶

2021-11-18 09:50:35

自动驾驶辅助驾驶人工智能

2022-07-12 09:42:10

自动驾驶技术

2021-04-15 06:24:50

人工智能AI自动驾驶

2018-10-24 14:16:33

自动驾驶道路测试牌照

2022-04-12 09:21:50

AIPython自动驾驶

2021-04-30 11:44:04

自动驾驶智能化汽车

2020-09-28 14:00:06

自动驾驶AI网络

2019-09-19 14:10:12

人工智能物联网自动驾驶

2021-12-01 10:21:27

自动驾驶技术人工智能

2021-12-16 10:45:22

自动驾驶数据人工智能

2022-02-17 10:22:17

汽车智能自动驾驶

2019-11-25 09:55:34

自动驾驶人工智能无人驾驶

2023-03-15 11:54:32

无人驾驶系统

2021-11-01 13:53:24

自动驾驶数据人工智能

2021-11-18 22:43:56

自动驾驶技术安全

2021-01-26 21:26:10

自动驾驶AI人工智能
点赞
收藏

51CTO技术栈公众号