快轉到主要內容
  1. 文章/

聽說你是爬蟲工程師逆?

·100 字·
Career Scraper
目錄

打從我進入現在的公司第一天起,我就一直在爬蟲組裡工作。前陣子,我被提升為爬蟲技術領導 (Scraper Tech Lead)。覺得是個好時機來寫寫作為一名爬蟲工程師意味著什麼,以及爬蟲工程師在一家快速發展的新創公司中的角色和責任。

作為一名爬蟲工程師就像是在一個充滿餐廳老闆的世界裡當一名數位農夫。當其他人專注於創造用戶體驗時,我們深入挖掘,提取推動數位經濟的原材料。讓我來分解這個獨特角色的實際內容。

煉成陣:BE + NE + DE
#

一個成功的爬蟲工程師處於三個關鍵領域的交叉點:

後端工程 Backend Engineering
#

我們構建能夠快速部署且擴展的分散式爬蟲系統,其中包含數十條不同功能與目的的數據管道,用於收集、處理和儲存數據,以支持公司的業務需求,並為公司的產品提供支持。 因此我們需求扎實的系統設計、資料庫架構等後端工程師的專業知識。

網路工程 Network Engineering
#

理解請求、響應、代理和CDN之間的複雜交互對我們的工作至關重要。我們是那些知道如何通過不同IP路由流量、繞過速率限制並穿越網站專門部署來阻止我們的複雜網絡防禦的人。

數據工程 Data Engineering
#

大多數爬取的數據不能直接使用,需要進行規範化和清洗。事實上,爬蟲是數據工程的一部分。我們將原始、混亂的數據轉化為提供真正商業價值的結構化信息。

秘密武器:逆向工程 Reverse Engineering(又稱駭客技術)
#

這是工作時候的高光時刻。 我們不只是接受API的呈現方式 - 我們拆解它們,弄清楚它們如何工作,然後為我們的目的重新創建它們。從解碼複雜參數到逆向工程認證流程,我們是解決那些本不該被解決的謎題的數位偵探。

數據管道
#

一旦我們收集了數據,我們的工作還沒有結束。我們還需要:

  • 建立能夠大規模處理信息的強大數據管道
  • 清理來自不同來源的混亂、不一致的數據
  • 聚合信息以提取有意義的模式
  • 創建 API 服務以提供數據

餐廳與農夫的比喻
#

如果後端和前端工程師是開餐廳的(創造用戶體驗),那麼爬蟲工程師就是提供原料的農夫。

  • 後端、前端 → 經營餐廳
  • 爬蟲 → 農夫

不要問農夫如何改善顧客體驗 - 那不是我們的領域。我們是那些早起,弄髒雙手,花無數小時調試以從互聯網深處提取那些寶貴數據原料的人。

爬蟲工程師需要的人格特質
#

擁抱混亂
#

在我們的世界裡,沒有什麼是穩定的。網站不通知就變更,APIs突然使用新的保護措施,昨天完美運行的今天可能徹底失敗。一個成功的爬蟲工程師不會與這種混亂抗爭 - 他們將其視為工作的自然狀態。

適應被討厭
#

讓我們誠實面對:那些我們努力爬取的對象並不喜歡我們做的事。我們從他們的平台上提取價值,往往違背他們明確的意願。如果你需要被普遍喜愛,這不是適合你的職業。

願意理解他人(誒?)
#

這似乎與前一點相矛盾,但實際上是互補的。要有效地進行爬取,你需要了解開發人員如何思考,他們如何保護數據,以及他們重視什麼。有一位智者曾說:“如果你願意去理解人,他們會喜歡你;但如果你太深入地理解他們,他們會轉而敵視你來保護他們自己。”

這種對人性的深刻理解對於預測平台將如何回應你的爬取行為至關重要。對於那些有興趣培養這些性格特質的人,我推薦按以下順序閱讀:《生活的12條規則》、《被討厭的勇氣》和《人性的法則》。

結論
#

作為爬蟲工程師並不光鮮亮麗。我們無法展示漂亮的UI或談論愉悅的用戶體驗。但我們是提供原材料的無聲農夫,這些原材料推動了當今大部分數據驅動的世界。這是一個需要跨多個領域的技術卓越和能夠在逆境中茁壯成長的性格的職業。

所以下次當你使用價格比較工具或驚嘆於一個全面的數據集時,請記住那些花費無數小時調試網絡請求和逆向工程APIs使之成為可能的爬蟲工程師。

常見問題
#

  1. 你們用Python嗎?

不。我們使用TypeScript。像BeautifulSoup或Scrapy這樣的高級爬蟲庫對許多用例來說很好,但作為企業,我們開發較低級別的爬蟲系統,使我們的操作更加高效和可維護。

  1. 爬蟲不是違法的嗎?

這是一個取決於多種因素的灰色地帶。在我們的情況下,我們主要模仿平台上的人類行為,這使我們處於較安全的領域。

  1. 爬蟲最大的挑戰是什麼?

變化。網站不斷變化 - 有時是故意阻止爬蟲。昨天完美運行的今天可能就會失效。這需要持續監控、自動警報和系統的快速適應。

  1. 你們如何長期維護爬蟲?

由於AB測試、區域規則和其他變量,這是一個棘手的部分。我們通常需要同時維護多個格式解析器。保持代碼清晰簡潔是一個很大的挑戰。我們依靠良好的工程實踐和專門技術的結合:強大的錯誤處理、全面的日誌記錄、自動監控、智能重試,以及能夠檢測並適應微小變化的系統。

  1. 你們是否與你們爬取的公司合作?

實際上,他們中的一些是我們的客戶,我覺得這很有趣。他們不希望別人爬取他們的數據,但他們想要競爭對手的爬取數據。 呵,資本主義。

  1. 業餘爬蟲和企業級爬蟲操作有什麼區別?

在台灣,當有人開始學習爬蟲技術時,第一個練習通常是爬取PTT(一個流行的台灣論壇)。其格式很少變化。但如果你想爬取一些有利可圖的平台,他們會因為更好的SEO、用戶體驗等不斷更改格式和政策。所以我們需要不斷適應這些變化。

此外,作為企業用例,我們需要考慮規模、可靠性和可維護性。業餘爬蟲可能適用於一次性項目,但企業操作需要分佈式基礎設施、監控、警報、數據驗證、清理管道、錯誤恢復和處理變化的系統方法。我們構建的是系統,而不是腳本。

編輯筆記:本文由筆者親自撰寫,並由 Anthropic 的 AI 助手 Claude 協助編輯和補充。

艾瑞克
作者
艾瑞克
只要有心 人人都可以成為萬能工程師