iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 21
0

今天翻找 Programmable Web 找到一個還蠻有趣的服務,Webhose.io API。查了中文資料都完全沒有,那我剛好做個簡單介紹。

Webhose.io 是一個網路爬蟲服務,網路上的資料林林總總各式各樣,webhose 幫你依照某些需求搜出來然後裝進一個統一的格式。

可以爬的資料分成幾個種類:

  • News Blogs & Discussions- 新聞、部落格、線上討論
  • Reviews - 評論
  • E-Commerce - 電商
  • Dark Web - 暗網
  • Broadcast - 廣播電視

來試用看看。點下 ‘Get Web Data‘ 按鈕,然後就進到了註冊頁面。
填完註冊表單之後,出現的是他的 API Playground

既然簡單直接,那就直接把它拿來玩玩看。不知道 query 裡面要寫什麼? 按旁邊的 Example Queries 好了。

這裡面的例子有蠻多的,像上圖這樣

  • 找到含有 “美國” 的當紅新聞
  • 找到最少臉書100讚的部落格文或新聞
  • 找到 最少10 個 Linkedin 分享或超過 100 臉書分享的新聞
  • 找到從法國來的論壇文章

翻看過這些例子可以幫助我們了解這個 API 大概可以做到什麼樣的事情。目前看起來,他可以根據社群媒體的分享或按讚來過濾資料,可以指定資料來源,還有一個可以判定“當紅”的某種機制。

在 query input 欄位裡面,你可以按 add filter 按鈕,會跳出一個 input 框讓你選擇要放入哪些參數。
比方說,限制尋找資料的

  • language 語言
  • author 作者
  • has_video 內容有沒有含影片
  • rating 指定要找1.0-5.0顆星的線上評論
  • site_type data feed 的種類,像是 blogsnewsdiscussions
  • 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 Key
  • format:資料格式 (預設 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 來改,放上成果如下:

CodePen 連結


上一篇
[30apis] Day 19 : Wikipedia (MediaWiki) API
下一篇
[30apis] Day 21:Google Map & GDELT Geo API
系列文
我每天都接一個API30

尚未有邦友留言

立即登入留言