上一篇老猿配置了一個簡單的Sitemap讓它執行起來,看官們跟著操作一遍,不知道對Web Scraper有沒有一個整體的認知和印象。本篇我們聊一下Web Scraper的工作原理和上一篇裡每步操作是什麼意思。
還沒看上一篇,先閱讀一下,因為本篇是結合到上篇的操作例子來講的。Web Scraper簡單配置方法
Web Scraper的組成
Web Scraper是靠sitemap裡配置的抓取規則來指揮如何抓取資料的。一個sitemap裡由“Start URL” 和 多個巢狀”Selector”(通常有Link selector和Text selector)組成。如下圖:
“Start URL”就是要抓取資料的入口URL。比如你要抓新浪體育新聞,那麼入口URL就是 sports.sina.com.cn;要抓知乎旅行話題裡面的帖子,入口就是zhihu.com/topic/19551556/hot 。Start URL就是網站裡面的列表頁/頻道頁,該頁面下有很多連結(URL)。Web Scraper就是從這個入口開始抓取資料的。
Web Scraper的執行邏輯
我們再來看上圖,Web Scraper先訪問Start URL,把Start URL的頁面抓下來,靠我們寫的Link Selector把頁面裡面的連結抽出來,(所以叫Link selector),連結抽出來後,Web Scraper就挨個訪問這些連結(這些連結是每個詳細頁面),然後靠我們寫的Text Selector把詳細頁裡的文字資訊抽出來。
它會自己迴圈做這個事情,直到所有的頁面抓完,抓完後會顯示Finish字樣,這時就可以選擇 Export Data as CSV 把資料匯出到本地。
那麼Web Scraper是如何知道哪個頁面該用Link Selector 還是 Text Selector呢?
你回到上一篇文章,看我們新增Selector時是有巢狀關係的,我們填完Start URL後就新增了一個Link Selector,告訴它 Start URL的頁面用Link Selector來抽取,新增完後,我們點選進入了剛新增的Link Selector,然後在裡面新增的Text Selector,是告訴它抽取內容資訊時用這個selector,這是巢狀關係的,也可以叫做父子節點關係。
Web Scraper的工作原理大致就是這樣,總結一下:
抓取時需要一個入口地址,Web Scraper就順著這個地址一層一層的往下抓,然後靠著我們寫的各種selector來抽取資料,直到所有的連結都抓完。寫selector的時候要注意巢狀關係。
看起來還是挺簡單的吧。我們用了兩篇來操作演示和解釋Web Scraper的原理,實際上簡化了很多,後面的幾篇老猿會寫一些更詳細,更細節的東西。
Web Scraper系列文章:
我的公眾號:猿人學 Python 上會分享更多心得體會,敬請關注。
***版權申明:若沒有特殊說明,文章皆是猿人學 yuanrenxue.com 原創,沒有猿人學授權,請勿以任何形式轉載。***