1. 程式人生 > >RuiJi Scraper基礎 – RuiJi表達式模型

RuiJi Scraper基礎 – RuiJi表達式模型

nbsp fir tile 大致 一個 不同 image 前言 需要

前言

RuiJi Scraper是一款可視化的瀏覽器爬蟲擴展,是一款適合金融、新聞編輯、新媒體人員、個人站點、爬蟲工作者數據采集工具。

RuiJi表達式是RuiJi Scraper的抽取模型,同時也是RuiJi.Net開源爬蟲框架的抽取模型,RuiJi.Net是github上的開源項目,貢獻者同時也是RuiJi Scraper的作者。

RuiJi表達式是大量的爬蟲工作中總結出的經驗,基本上可以適用於所有需抓取的網頁。

RuiJi Scraper目前僅在firefox中上線,地址為 https://addons.mozilla.org/zh-CN/firefox/addon/ruiji-scraper/

數據塊 Block

在網頁設計時,網頁設計者往往會使用樣式,ID等來區分網頁的區域,不同的區域顯示不同的內容,這不僅在網頁設計上是大多設計者共同使用的習慣,同時也利用該種方式,在最終產品上形成視覺可識別的區域,使使用者能過快速的定位自己關心的內容。

Block是我們需要提取的區域,在一個頁面中這種區域可能存在多個。我們以google的RuiJi Scraper搜索結果為例來說明一下Block。

技術分享圖片

從圖中我們可以看出,google的頁面搜索結果(all)大致分為三部分,視頻搜索結果,圖片搜索結果,網頁搜索結果。這三種搜索結果以不同的形式展示給搜索用戶,視頻和圖片的搜索結果為橫向,網頁的搜索結果為縱向,三種搜索結果的數據都有各自的展示形式。視頻搜索結果橫向,具有視頻預覽,時長,標題,作者,來源,上傳時間。圖片搜索結果橫向,主要展示形式為圖片。網頁搜索結果縱向,具有標題,網址,摘要。我們可能對其中的一部分或全部內容感興趣。

Block用來定位我們感興趣的需要提取的區域。

在Block未被定義的情況下,RuiJi表達式默認將Body作為Block

數據片 Tile

正如上面所述,每個Block可能都具有各自的展示形式(也可能相同),但是每個Block中的內容的體現形式是一樣的,在網頁開發中,開發者往往使用循環的方式,將需要展示的數據以相同子元素的形式展示在頁面中。我們同樣以google的RuiJi Scraper搜索結果其中的網頁搜索結果為例,如下圖所示:

技術分享圖片

如果我們忽略Tile中的內容的話,您將發現Block中是以相同子元素進行循環來向用戶展示數據。

Tile被用來定義Block中重復的子元素

元數據 Meta

元數據是我們真正要提取的數據,我們將這些數據抓取下來,保存到文檔或數據庫,以備後續使用。RuiJi Scraper會將提取出的數據按照所屬Tile,Block進行分組,並將抽取結果轉換為結構化的數據。下圖展示的是一個數據片的搜索結果形式。這裏具有標題,鏈接和摘要。Meta用來描述我們在這個數據片中感興趣的數據。這裏元數據的數量根據您的需要進行定義。

技術分享圖片

Meta用來描述我們在這個數據片中感興趣的數據

RuiJi Scraper基礎 – RuiJi表達式模型