讓Scrapy的Spider更通用

2021-07-14 06:26:27 字數 753 閱讀 2121

《scrapy的架構初探》一文所講的spider是整個架構中最定製化的乙個部件,spider負責把網頁內容提取出來,而不同資料採集目標的內容結構不一樣,幾乎需要為每一類網頁都做定製。我們有個設想:是否能做乙個比較通用的spider,把定製部分再進一步隔離出去?

gooseeker有乙個爬蟲群模式,從技術實現層面來考察的話,其實就是把爬蟲軟體做成乙個被動接受任務的執行單元,給他什麼任務他就做什麼任務,也就是說同乙個執行單元可以爬多種不同的**。而分配任務的是gooseeker會員中心的爬蟲羅盤,實現集中管理分布執行。

開源python即時網路爬蟲專案同樣也要盡量實現通用化。主要抓取以下2個重點:

下面我們將進一步講解實現原理,以助於讀者閱讀原始碼。

按照上述設想編寫和調測scrapy的通用spider

研究是否可以更加通用,把gooseeker的爬蟲群排程都引入到spider中,也就是在通過第乙個api獲得提取器之前再增加乙個獲得爬蟲群排程任務的過程,這樣,把所有spider都變成被動接受任務的工作模式,每個spider是不固定抓取規則的。

python即時網路爬蟲專案: 內容提取器的定義

scrapy:python3下的第一次執行測試

開源python即時網路爬蟲github源

Scrapy 普通的Spider(二)

這個spider是用於解析xml的,它可以通過指定的節點迭代的解析xml。迭代器可以選擇iternodes,xml或html。由於xml和html都需要一次性讀取整個dom然後才能解析xml,這樣會有效能的問題,所以推薦使用iternodes迭代器。但是當解析有錯誤標記的xml時,使用html迭代器...

Scrapy之Spider的用法

spider是定義乙個特定站點 或一組站點 如何被抓取的類,包括如何執行抓取 即跟蹤鏈結 以及如何從頁面中提取結構化資料 即抓取項 也就是說我們要抓取的 的鏈結配置 抓取邏輯 解析邏輯等其實都是在 spider 中定義的 spider 的整個爬取迴圈過程如下 我們定義的 spider 是繼承自 sc...

scrapy 監控spider啟動和關閉

from scrapy.xlib.pydispatch import dispatcher from scrapy import signals from scrapy.exceptions import dropitem class duplicatespipeline object def in...