寫了個簡單爬蟲,分析 Boss 直聘自動駕駛崗位

勇哥编程游记發表於2024-03-17

兩年前,朋友想知道 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 或更高版本,就點最上面的連結:

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");
}

點選執行,如果開啟了掘金網頁說明環境配置成功。

3 流程分析

1、進入搜尋頁面 , 搜尋框中輸入‘自動駕駛’

2、搜尋結果若出現登入浮窗,則關閉,將頁面中職位列表透過 class 擷取出來,儲存到資料庫

3、點選下一頁

4 寫到最後

當我們將 Selenium 作為爬蟲工具時,儘管它有很多優點,但也存在明顯的缺點。

Selenium 模擬瀏覽器動作,除了載入需要的資料外,還會載入圖片、JS、CSS等不必要的內容,導致網路資源和計算資源消耗增加,爬取速度變慢,爬取規模受限。

因此,長期大規模使用 Selenium 作為生產工具不是一個明智的選擇。

然而,如果只是想在個人電腦上快速抓取少量資料,Selenium 確實是一個非常方便的工具。

最後, crawler-boss 的原始碼實現非常簡單,假如同學們感興趣,可以關注公眾號,回覆 「爬蟲」即可獲取。

參考文件:

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

https://juejin.cn/post/7284318118993068051


如果我的文章對你有所幫助,還請幫忙點贊、在看、轉發一下,你的支援會激勵我輸出更高質量的文章,非常感謝!

相關文章