朋友想知道 Boss 直聘上關(guān)于自動(dòng)駕駛的崗位有哪些 ,于是,筆者寫(xiě)了一個(gè)簡(jiǎn)單的爬蟲(chóng) crawler-boss ,將全國(guó)大城市相關(guān)崗位的信息收集起來(lái)。
這篇文章,筆者想分享爬蟲(chóng) crawler-boss 的設(shè)計(jì)思路。
圖片
對(duì)于很多動(dòng)態(tài)渲染的網(wǎng)頁(yè)而言,想要抓取它的數(shù)據(jù),就需要對(duì)網(wǎng)頁(yè)的 JS 代碼以及 Ajax 接口等進(jìn)行分析。
而當(dāng) JS 代碼混亂,難以分析,Ajax 的接口又含有很多加密參數(shù)的時(shí)候,就非常難以直接找出規(guī)律,那么上述過(guò)程會(huì)花費(fèi)大量的時(shí)間和精力。
圖片
上圖中, Boss 直聘接口參數(shù)比較多,筆者并不想花太多時(shí)間研究這些參數(shù),于是筆者選擇了另一種方案:Selenium + chromedriver。
Selenium是 web 瀏覽器自動(dòng)化測(cè)試的工具,它可以模擬用戶與所有主流瀏覽器之間的交互,比如點(diǎn)擊,輸入,抓取,拖拽等等。
由于網(wǎng)頁(yè)大多采用是 JavaScript 動(dòng)態(tài)渲染,使得爬蟲(chóng)返回的結(jié)果可能與用戶實(shí)際看到的網(wǎng)頁(yè)并不一致。我們看到的網(wǎng)頁(yè)可能是經(jīng)過(guò) Ajax 加載,或者是JavaScript以及其他算法計(jì)算后生成的。
因此,我們可以使用 Selenium直接模擬瀏覽器運(yùn)行,我們?nèi)庋劭吹降氖鞘裁礃樱軌蜃ト〉臄?shù)據(jù)就是什么樣。
WebDriver 是 Selenium 的核心組件 , 負(fù)責(zé)控制瀏覽器進(jìn)行各種操作。WebDriver 可以通過(guò)不同的驅(qū)動(dòng)程序與不同的瀏覽器進(jìn)行通信,比如 ChromeDriver、FirefoxDriver 等。
打開(kāi)Google瀏覽器,網(wǎng)址欄輸入:chrome://settings/help
圖片
對(duì)照你的版本下載,當(dāng)你使用的是 Chrome 版本 115 或更高版本,就點(diǎn)最上面的鏈接:
https://chromedriver.chromium.org/downloads/
圖片
找到你對(duì)應(yīng)的版本,我這里是122.0.6261.129
圖片
下載完成之后,將文件解壓后,拷貝到 /usr/local/bin/ 目錄 。
圖片
安裝完 chromedriver 后,Java 應(yīng)用中添加如下依賴:
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-server</artifactId> <version>3.141.59</version></dependency>然后通過(guò)如下代碼,測(cè)試環(huán)境是否 OK 。
public static void main(String[] args) { WebDriver webDriver = new ChromeDriver(); webDriver.get("https://juejin.cn");}點(diǎn)擊運(yùn)行,如果打開(kāi)了掘金網(wǎng)頁(yè)說(shuō)明環(huán)境配置成功。
1、進(jìn)入搜索頁(yè)面 , 搜索框中輸入‘自動(dòng)駕駛’
圖片
圖片
2、搜索結(jié)果若出現(xiàn)登錄浮窗,則關(guān)閉,將頁(yè)面中職位列表通過(guò) class 截取出來(lái),保存到數(shù)據(jù)庫(kù)
圖片
圖片
3、點(diǎn)擊下一頁(yè)
圖片
圖片
執(zhí)行完成之后,職位記錄表新增了接近 2000 條記錄。
圖片
當(dāng)我們將 Selenium 作為爬蟲(chóng)工具時(shí),盡管它有很多優(yōu)點(diǎn),但也存在明顯的缺點(diǎn)。
Selenium 模擬瀏覽器動(dòng)作,除了加載需要的數(shù)據(jù)外,還會(huì)加載圖片、JS、CSS等不必要的內(nèi)容,導(dǎo)致網(wǎng)絡(luò)資源和計(jì)算資源消耗增加,爬取速度變慢,爬取規(guī)模受限。
因此,長(zhǎng)期大規(guī)模使用 Selenium 作為生產(chǎn)工具不是一個(gè)明智的選擇。
然而,如果只是想在個(gè)人電腦上快速抓取少量數(shù)據(jù),Selenium 確實(shí)是一個(gè)非常方便的工具。
最后, crawler-boss 的源碼實(shí)現(xiàn)非常簡(jiǎn)單,假如同學(xué)們感興趣,可以關(guān)注公眾號(hào),回復(fù) 「爬蟲(chóng)」即可獲取。
https://zhuanlan.zhihu.com/p/137710454
https://juejin.cn/post/7284318118993068051
本文鏈接:http://m.www897cc.com/showinfo-26-76483-0.html寫(xiě)了個(gè)簡(jiǎn)單爬蟲(chóng),收集 Boss直聘自動(dòng)駕駛崗位
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com