通过维基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/ ...
随机推荐
- 缓冲区溢出利用——捕获eip的傻瓜式指南
[译文] 摘要:为一个简单的有漏洞程序写一个简单的缓冲区溢出EXP,聚焦于遇到的问题和关键性的教训,提供详细而彻底的描述 内容表:1. I pity the fool, who can't smash ...
- GO 1.5 代码编译安装 [centos7 64位]
2015年8月,Go 1.5 正式发布,这是 Go 的第六个重要版本. 此版本包括大量重大改进,编译工具链从 C 转换到 Go,从 Go 代码库中完全移除 C 代码.完完全全重新设计了垃圾收集器,减少 ...
- [Android]使用Dagger 2依赖注入 - API(翻译)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5092525.html 使用Dagger 2依赖注入 - API ...
- iOS --SQL的增加、删除、查找、修改
iOS对于数据库的操作:增加.删除.查找.修改 首先需要创建一个数据库:本程序的数据库是在火狐浏览器里的插件里写的微量型数据库 火狐找查找SQLite Manager的步骤: 第一步:在工具栏找到附加 ...
- Visual Studio 生成事件命令
Visual Studio在生成项目工程前后,有时我们需要做一些特殊的操作,比如:拷贝生成的dll到指定目标下面等. 结合VS可以添加预先生成事件和后期生成事件,采用命令或bat批处理. 1.Visu ...
- python浅谈正则的常用方法
python浅谈正则的常用方法覆盖范围70%以上 上一次很多朋友写文字屏蔽说到要用正则表达,其实不是我不想用(我正则用得不是很多,看过我之前爬虫的都知道,我直接用BeautifulSoup的网页标签去 ...
- 3-EM的安装和使用
EM的安装和使用 一.EM工具的安装和使用 1.保证数据库启动 2.保证侦听启用 3.通过这个命令可以查看到侦听端口1521的状态信息 4.启动em工具 5.查看em工具是否运行 6.登陆网站并进行操 ...
- MDK st-link下载STM32程序出现Internal command error和Error:Flash download failed. Target DLL
MDK st-link下载STM32程序出现Internal command error和Error:Flash download failed. Target DLL 是因为目标板的芯片处于休眠 ...
- CORS基础要点:关于dataType、contentType、withCredentials
事实上,面试时我喜欢问跨域,因为多数开发者都知道它并且常用,而我希望能从面试者的回答中知道他在这个问题的深入程度,进一步看看面试者研究问题的思维方式及钻研精神,然而确实难到了很多人,当然这也不是面试通 ...
- struts2+hibernate整合-实现登录功能
最近一直学习struts2+hibernate框架,于是想把两个框架整合到一起,做一个小的登录项目.其他不多说,直接看例子. 1).Struts2 和hibernate的环境配置 包括jar包.web ...