Friday, November 9, 2018

Web scraping notes

最近公司的工作裡有一部分是做 web scraping 。要做的事,大致可以分成 2 個步驟:
a.  login/authentication
b.  extract data from web page

其中,登入的部分,客戶的網站大概可以分成兩大類別:
(1) token based authentication
最新一代的標準是 JSON Web token 。
(2) session based authentication
這種通常都需要去處理 cookie 才有辦法登入

客戶的網站有的是 backend rendering ,有的是 frontend rendering 。如果是前者,通常 backend API 傳回的資料是 JSON ,算是最容易處理。如果是後者,backend API 傳回的資料則是 HTML/XML 的格式

要從 HTML/XML 中提出資料,通常可以考慮三種做法:
(1) Regular expression  => 直接硬做字串的比對
(2) XPath                       => 可以看懂 XML tree ,透過資料的結構關系去定位資料的位置。
(3) CSS selector            => 表達能力比 XPath 略弱一些,但是使用比較廣泛。