通过维基API实现维基百科查询功能
通过英文维基的免费API,可以实现对维基百科的搜索查询或者标题全文查询等,尝试了一下通过title实现全文查询,返回的结果是wikitext格式,暂时不知道该如何应用,所以仅实现了查询功能,可以返回最接近的10条信息的标题、摘要、图片及链接。
我的DEMO页:https://zhangcuizc.github.io/My-FreeCodeCamp/
如下图:

搜索结果:

HTML如下:
<!DOCTYPE html>
<html>
<head>
<title>wikisearch</title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="css/main.css">
<link rel="icon" href="icon.ico">
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/main.js"></script>
</head>
<body>
<div class="logo">
<img src="enwiki.png">
</div>
<div class="searchbox">
<div class="searchbar">
<input type="text" name="searchcontent" value="" placeholder="search content" class="inputbox">
<button class="searchbtn">Search</button>
</div>
<div class="searchresult">
<ol>
<li>
<h3><a href="" target="_blank">loading……</a></h3>
<p><img src=""></p>
<div class="clearfix"></div>
</li>
<li>
<h3><a href="" target="_blank">loading……</a></h3>
<p><img src=""></p>
<div class="clearfix"></div>
</li>
<li>
<h3><a href="" target="_blank">loading……</a></h3>
<p><img src=""></p>
<div class="clearfix"></div>
</li>
<li>
<h3><a href="" target="_blank">loading……</a></h3>
<p><img src=""></p>
<div class="clearfix"></div>
</li>
<li>
<h3><a href="" target="_blank">loading……</a></h3>
<p><img src=""></p>
<div class="clearfix"></div>
</li>
<li>
<h3><a href="" target="_blank">loading……</a></h3>
<p><img src=""></p>
<div class="clearfix"></div>
</li>
<li>
<h3><a href="" target="_blank">loading……</a></h3>
<p><img src=""></p>
<div class="clearfix"></div>
</li>
<li>
<h3><a href="" target="_blank">loading……</a></h3>
<p><img src=""></p>
<div class="clearfix"></div>
</li>
<li>
<h3><a href="" target="_blank">loading……</a></h3>
<p><img src=""></p>
<div class="clearfix"></div>
</li>
<li>
<h3><a href="" target="_blank">loading……</a></h3>
<p><img src=""></p>
<div class="clearfix"></div>
</li>
</ol>
</div>
<div class="clearfix"></div>
</div>
</body>
</html>
CSS就不贴了,JS如下:
$(function(){
(function(){
var url='https://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max&origin=*&gsrsearch=';
// search函数,通过AJAX/wikiAPI得到响应信息
function search(url){
$.ajax({
url: url,
success:function(response){
// 获取响应信息中的pageid
var x=[];
for (var pageid in response.query.pages) {
x.push(pageid);
}
// 得到每个pageid的信息,包括搜索标题,摘要,链接,图片等
$(x).each(function(index, el) {
var page=response.query.pages[x[index]];
var title=page.title;
var extract=page.extract;
var imgsrc="";
try{
imgsrc=page.thumbnail.source;
}catch(e){}
var listcontent="";
if(imgsrc){
listcontent="<img src='"+imgsrc+"'>";
}
listcontent+=extract;
var href="http://en.wikipedia.org/wiki/"+encodeURIComponent(title);
var list=$(".searchresult ol li").eq(index);
list.find('a').text(title).attr('href', href);
list.find('p').html(listcontent);
});
}
});
}
// 点击搜索按钮后触发
$(".searchbtn").click(function() {
var searchwhat=$(".inputbox").val();
if(searchwhat&&searchwhat!=="please input something"){
var searchurl=url+searchwhat;
search(searchurl);
// 动画效果
$(".logo img").fadeOut();
$(".searchbox").animate({marginTop:"5px"}, 400,function(){
$(".searchresult").animate({height:"show"}, 600);
});
}else{
$(".inputbox").val("please input something").trigger('focus');
}
});
// 文本框获得焦点后触发
$(".inputbox").focus(function() {
$(this).select();
$(".searchbox").animate({marginTop:"300px"}, 400 ,function(){
$(".logo img").fadeIn();
});
$(".searchresult").stop(true,true).animate({height:"hide"}, 600);
}).keyup(function(event) {
// 按回车触发搜索
if (event.keyCode==13) {
$(".searchbtn").trigger('click');
$(".inputbox").blur();
}
});
})();
});
关键点还是在于维基的API,关于维基API的信息,可以查看:
API:Main page以及API:Query/zh
我的DEMO页:https://zhangcuizc.github.io/My-FreeCodeCamp/
通过维基API实现维基百科查询功能的更多相关文章
- PHP调用API接口实现天气查询功能
天气预报查询接口API,在这里我使用的是国家气象局天气预报接口 使用较多的还有:新浪天气预报接口.百度天气预报接口.google天气接口.Yahoo天气接口等等. 1.查询方式 根据地名查询各城市天气 ...
- 【百度地图API】小学生找哥哥——小学生没钱打车,所以此为公交查询功能
原文:[百度地图API]小学生找哥哥--小学生没钱打车,所以此为公交查询功能 任务描述: 有位在魏公村附近上小学的小朋友,要去北京邮电大学找哥哥.他身上钱很少,只够坐公交的.所以,百度地图API快帮帮 ...
- ArcGIS api for JavaScript 3.27 FindTask查询功能
在ArcGIS API中查询功能是经常使用的,常用的三个查询分别是FindTask,QueryTask,IdentifyTask.它们各自都有自己的特点. 查询功能分为属性查询和空间查询 FindTa ...
- [Architecture Pattern] Repository实作查询功能
[Architecture Pattern] Repository实作查询功能 范例下载 范例程序代码:点此下载 问题情景 在系统的BLL与DAL之间,加入Repository Pattern的设计, ...
- 微信小程序+OLAMI(欧拉蜜)自然语言API接口制作智能查询工具--快递、聊天、日历等
微信小程序最近比较热门,再加上自然语义理解也越来越被人关注,于是我想赶赶潮流,做一个小程序试试.想来想去快递查询应该是一种比较普遍的需求. 如果你也在通过自然语言接口做点什么,希望我的这篇博客能帮到你 ...
- arcgis api for js 地图查询
arcgis api for js入门开发系列四地图查询(含源代码) 上一篇实现了demo的地图工具栏,本篇新增地图查询功能,包括属性查询和空间查询两大块,截图如下: 属性查询效果图: 空间查询效 ...
- Springboot+Vue实现仿百度搜索自动提示框匹配查询功能
案例功能效果图 前端初始页面 输入搜索信息页面 点击查询结果页面 环境介绍 前端:vue 后端:springboot jdk:1.8及以上 数据库:mysql 核心代码介绍 TypeCtrler .j ...
- 【设计过程】.NET ORM FreeSql WhereDynamicFilter 动态表格查询功能
前言 最近几乎每天40度,越热越不想面对电脑,还好开源项目都比较稳定没那么多待解决问题,趁着暑假带着女儿学习游泳已略有小成.游泳好处太多了,建议有孩子的都去学学,我是在岸边指导大约一周左右就学会了,目 ...
- 百度地图API 批量添加 带检索功能的信息窗口
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
随机推荐
- activiti工作流的web流程设计器整合视频教程 SSM和独立部署
本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流 ...
- Android 防止控件被重复点击
转载: 工具类: public class Utils { private static long lastClickTime; public static boolean isFastDoubleC ...
- android环境下的即时通讯
首先了解一下即时通信的概念.通过消息通道 传输消息对象,一个账号发往另外一账号,只要账号在线,可以即时获取到消息,这就是最简单的即使通讯.消息通道可由TCP/IP UDP实现.通俗讲就是把一个人要发送 ...
- 用SVN check out项目后第三方库丢失
曾经用Cornerstone check out 一份项目下来,但其中第三方.a库始终丢失,项目报错,研究后找到了以下解决方法: 首先,Xcode默认忽略.a 文件.所以无法提交到svn服务器,但是很 ...
- IT技术风向标
2016 stackoverflow的统计 : http://stackoverflow.com/research/developer-survey-2016
- GUID生成器
这个GUID生成器是一个小巧的软件,属于笔者在空余时间开发的. http://pan.baidu.com/s/1sk6VGpn
- lucky 的 时光助理(2)
lucky小姐说:昨天晚上他喝醉了,发消息说他想我了,说他后悔了. 我很惊讶. 我问lucky:你们很久都没有联系, 突然说... 你怎么想. 没错,'他'就是lucky的前男友. lucky看着我, ...
- MySQL备份锁
无论逻辑备份还是物理备份,为了获取一致性位点,都强依赖于FTWRL(Flush Table With Read Lock).这个锁杀伤力非常大,因为持有锁的这段时间,整个数据库实质上不能对外提供写服务 ...
- 织梦dedecms漏洞修复大全(5.7起)
很多人说dedecms不好,因为用的人多了,找漏洞的人也多了,那么如果我们能修复的话,这些都不是问题. 好,我们来一个一个修复.修复方法都是下载目录下该文件,然后替换或添加部分代码,保存后上传覆盖(记 ...
- Windows 10 虚拟桌面切换
从Windows 10开始,终于有了和Mac一样的虚拟桌面了.但总感觉用着非常的别扭.在Mac中,切换虚拟桌面的操作可谓方便至极:除了触控板和Magic Mouse原生的支持外,通过罗技M557/55 ...