跳轉至內容

XQuery/維基百科查詢

來自華夏公益教科書

頁面抓取是檢索特定事實的一種方式,前提是其結構是穩定的。

這裡,任務是使用維基百科查詢鳥類的拉丁名稱,給定其通用名稱。

declare namespace h = "http://www.w3.org/1999/xhtml";

let $name := request:get-parameter("name",())
let $url := escape-uri(concat("http://en.wikipedia.org/wiki/",$name),false()) 
let $page := doc($url)
let $genus := $page//h:tr[h:td[. ='Genus:']]/h:td[2]
let $species := $page//h:tr[h:td[. ='Species:']]/h:td[2]
let $binomial := string($page//h:tr[h:th//h:a[.='Binomial name']]/following-sibling::h:tr//h:b)
return 
   <bird name="{$name}" genus="{$genus}" species="{$species}" binomial="{$binomial}"/>

這裡,定位所需資料的路徑,假設頁面採用鳥類頁面格式,涉及複雜的 XPath 表示式。例如,屬名是第一單元格為“屬名”的表格行的第二個單元格。

黑天鵝 維基百科

指令碼經常失敗,因為

  1. 名稱不明確 畫眉鳥維基百科
  2. 名稱過於廣泛 奇異鳥 維基百科

不難看出,具有本體關係的更多語義標記將優於這些不確定的扭曲。

華夏公益教科書