XQuery/维基百科查找
外观
< 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 表达式。例如,属名是第一单元格为“属名”的表格行的第二个单元格。
脚本经常失败,因为
不难看出,具有本体关系的更多语义标记将优于这些不确定的扭曲。