好文分享 — Scrapy vs. Crawlee

軟體開發相關業務裡,網路爬蟲這 1 項其實相當常見,例如商品比價、股票資訊、房屋成交紀錄、 Zipcode 資料,甚至從競爭者的網站「借」資料等等,只要你從事軟體開發就多多少少都會遇到這些需求。

而談到開發網路爬蟲,不少人都會想到使用 Python 。

理由除了 Python 好寫、容易上手之外,大概是許多課程、教學資源都使用 Python 開發網路爬蟲的緣故。

Python 目前也有不少 packages 可以用來開發網路爬蟲,包含:

  1. Beautiful Soup
  2. lxml
  3. requests
  4. AIOHTTP

不過上述這些 packages 的定位並不是框架,目前比較知名的 Python 網路爬蟲框架是 Scrapy

Scrapy 將 1 個網路爬蟲的構成拆解為多個步驟,以寫 class 的方式進行開發,在這個框架下不僅可以開發出具結構化的爬蟲程式,還可以利用 Scrapy 所提供的各種基礎建設,減少重複開發的成本,例如能自動更換 Proxy 的 scrapy middleware, 自動 retry 的 middleware 等等,而且 Scrapy 專注的是框架,所以在這個框架下,我們依然能使用上述提到的各種 packages ,使用上沒有衝突。

p.s. Scrapy 也支援 asyncio

但 Scrapy 預設無法處理使用 JavaScript 渲染產生的網頁或元件(例如 React.js, Next.js),所以必須使用 Selenium, Playwright, Puppeteer 等 browser automation 技術才能處理,使用上沒有天生支援這些技術的其他框架來得方便。

Scrapy vs. Crawlee 1 文所提供的比較來看,目前針對 JavaScript 渲染產生的網頁,使用 JavaScript 開發的 Crawlee 會是不錯的選擇。

Crawlee 目前不僅支援 Playwright 與 Puppeteer, 也有支援 autoscaling (可以增加平行處理的網路爬蟲數),而且連 Proxy 也有支援,在防止爬蟲被阻擋的技術上,則多了可以修改 browser fingerprints 的功能,避免網路爬蟲所使用的瀏覽器被記住特徵而被阻擋。

如果你有需要爬梳 JavaScript 渲染產生的網頁,而且不排斥使用 JavaScript 的話,不妨可以試試 Crawlee 。

詳細的 Scrapy 與 Crawlee 比較,可以閱讀 Scrapy vs. Crawlee 1 文。

Facebook Threads X

對抗久坐職業傷害

研究指出每天增加 2 小時坐著的時間,會增加大腸癌、心臟疾病、肺癌的風險,也造成肩頸、腰背疼痛等常見問題。

然而對抗這些問題,卻只需要工作時定期休息跟伸展身體即可!

你想輕鬆改變現狀嗎?試試看我們的 PomodoRoll 番茄鐘吧! PomodoRoll 番茄鐘會根據你所設定的專注時間,定期建議你 1 項辦公族適用的伸展運動,幫助你打敗久坐所帶來的傷害!

贊助我們的創作

看完這篇文章了嗎? 休息一下,喝杯咖啡吧!

如果你覺得 MyApollo 有讓你獲得實用的資訊,希望能看到更多的技術分享,邀請你贊助我們一杯咖啡,讓我們有更多的動力與精力繼續提供高品質的文章,感謝你的支持!