今天翻找 Programmable Web 找到一個還蠻有趣的服務,Webhose.io API。查了中文資料都完全沒有,那我剛好做個簡單介紹。
Webhose.io 是一個網路爬蟲服務,網路上的資料林林總總各式各樣,webhose 幫你依照某些需求搜出來然後裝進一個統一的格式。
可以爬的資料分成幾個種類:
來試用看看。點下 ‘Get Web Data‘ 按鈕,然後就進到了註冊頁面。
填完註冊表單之後,出現的是他的 API Playground
。
既然簡單直接,那就直接把它拿來玩玩看。不知道 query 裡面要寫什麼? 按旁邊的 Example Queries
好了。
這裡面的例子有蠻多的,像上圖這樣
翻看過這些例子可以幫助我們了解這個 API 大概可以做到什麼樣的事情。目前看起來,他可以根據社群媒體的分享或按讚來過濾資料,可以指定資料來源,還有一個可以判定“當紅”的某種機制。
在 query input 欄位裡面,你可以按 add filter
按鈕,會跳出一個 input 框讓你選擇要放入哪些參數。
比方說,限制尋找資料的
language
語言author
作者has_video
內容有沒有含影片rating
指定要找1.0-5.0顆星的線上評論site_type
data feed 的種類,像是 blogs
、 news
、discussions
domain_rank
依流量排行過濾、排行越低表示流量越大performance_score
一個針對 blogs
& news
的參數,介於數字 0 - 10。 0 表示寫得不好,沒人分享,10則可能是在臉書上分享上千。我使用了第一個範例,把 title
改成 Javascript
。
query 裡面寫的是:
performance_score:>0 (title:"Javascript") language:english
這表示我要找的是熱門的文章,標題含有 ”Javascript”,語言設定是英文。
Request URL endpoint 則是
"http://webhose.io/filterWebContent
?token=a79be9b9-b159-4846-bcc1-210ce08b8227
&format=json&ts=1512806050767
&sort=performance_score
&q=performance_score%3A%3E0%20(title%3A%22Javascript%22)%20language%3Aenglish
在這邊可以看出,一個 enpoint 可以有的幾個參數,
token
:你的 API Keyformat
:資料格式 (預設 json)sort
:依照特定標準排序回傳結果q
:要查詢的 query 條件按下 RUN
,在底下他就給我看了回來的 response。旁邊還很好心的放了預覽功能,連縮圖都有。
webhose.io的前 1000 個 request 是免費的,所以看右側的白色方格,裡面正寫著 ”剩下995個 request“。
在 Playground 的 API 試驗成功,也拿到了連結,現在就是來看看文件的時候了。
在文件裡寫明,API 呼叫都使用 HTTP Method 的 GET 。
其實我也只要知道這些資訊就夠用了。現在來實做看看。
var url = "https://webhose.io/filterWebContent?token=a79be9b9-b159-4846-bcc1-210ce08b8227&format=json&ts=1512806050767&sort=performance_score&q=performance_score%3A%3E0%20(title%3A%22Javascript%22)%20language%3Aenglish";
function makeRequest() {
xhr = new XMLHttpRequest();
xhr.onload = function() {
var response = JSON.parse(this.responseText);
console.log(response);
};
xhr.open(
"GET",
url,
true
);
xhr.send();
}
makeRequest();
得到一個好大的 response:
裡面的資料各式各樣,包含連結圖片臉書按讚數量等,所有的文章也是附上全文。
接下來的事情就不多解釋了,我拿之前的 Code 來改,放上成果如下: