当前位置: 首页 > 面试题库 >

如何通过API获得简短的文本片段和Wikipedia文章的主图像?

齐思淼
2023-03-14
问题内容

我正在尝试创建一个简单的Wikipedia克隆,允许用户搜索一个主题,然后显示10条结果,其中包含文章的图像和一小段文本。我已经能够.ajax()毫无问题地将用户提供的搜索字段传递给我的电话。但是现在我无法检索图像,我已经阅读了StackOverflow上有关此问题的所有其他文章,但没有成功。

$(document).ready(function() {

  var input = $('input');

  var button = $('button');



  //Create varialbe to store search field

  var toSearch = '';



  //Api data:

  var searchUrl = 'https://en.wikipedia.org/w/api.php';



  //.ajax() to get articles

  var ajaxArticle = function() {

      $.ajax({

        url: searchUrl,

        dataType: 'jsonp',

        data: {

          action: 'query',

          format: 'json',

          prop: 'extracts',

          exchars: '200',

          exlimit: 'max',

          explaintext: '',

          exintro: '',

          rawcontinue: '',

          generator: 'search',

          gsrsearch: toSearch,

          gsrnamespace: '0',

          gsrlimit: '10'

        }, //End data:

        success: function(json1) {

          console.log(json1);

        }

      }); //End .ajax()

    }



  //.ajax() to get images

  var ajaxImage = function() {

      $.ajax({

        url: searchUrl,

        dataType: 'jsonp',

        data: {

          'action': 'query',

          'titles': toSearch,

          'prop': 'pageimages',

          'format': 'json'

        }, //End data:

        success: function(json2) {

          console.log(json2)

        }

      }); //End .ajax()

    }



  //Auto complete search bar

  input.autocomplete({

    source: function(request, response) {

      $.ajax({

        url: searchUrl,

        dataType: 'jsonp',

        data: {

          'action': "opensearch",

          'format': "json",

          'search': request.term

        },

        success: function(data) {

          response(data[1]);

        }

      });

    }

  }); //End auto compelete



  //Listen for click on button to store search field

  button.click(function() {

    toSearch = input.val();

    ajaxArticle();

    ajaxImage();

  }); //End click handler

})


<html>

<body>

  <head>

    <title>My Wikipedia Viewer</title>

    <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/themes/smoothness/jquery-ui.css" />

  </head>

  <section>

    <input type='text' value='' placeholder='Search for...'>

    <button>Make it so</button>

  </section>

  <section class='articles'></section>

</body>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/jquery-ui.min.js"></script>

<script type='application/javascript' src='js/script.js'></script>

</html>

感谢您提供的任何帮助。


问题答案:

您可以在一个请求中检索文本和图像,请尝试以下操作:

$(document).ready(function () {

    var articles = $('.articles');

    var input = $('input');

    var button = $('button');

    var toSearch = '';

    var searchUrl = 'https://en.wikipedia.org/w/api.php';



    var ajaxArticleData = function () {

        $.ajax({

            url: searchUrl,

            dataType: 'jsonp',

            data: {

                //main parameters

                action: 'query',

                format: 'json',



                generator: 'search',

                    //parameters for generator

                    gsrsearch: toSearch,

                    gsrnamespace: 0,

                    gsrlimit: 10,



                prop: 'extracts|pageimages',

                    //parameters for extracts

                    exchars: 200,

                    exlimit: 'max',

                    explaintext: true,

                    exintro: true,



                    //parameters for pageimages

                    piprop: 'thumbnail',

                    pilimit: 'max',

                    pithumbsize: 200

            },

            success: function (json) {

                var pages = json.query.pages;

                $.map(pages, function (page) {

                    var pageElement = $('<div>');



                    //get the article title

                    pageElement.append($('<h2>').append($('<a>').attr('href', 'http://en.wikipedia.org/wiki/' + page.title).text(page.title)));



                    //get the article image (if exists)

                    if (page.thumbnail) pageElement.append($('<img>').attr('width', 150).attr('src', page.thumbnail.source));



                    //get the article text

                    pageElement.append($('<p>').text(page.extract));



                    pageElement.append($('<hr>'));



                    articles.append(pageElement);

                });

            }

        });

    };



    input.autocomplete({

        source: function (request, response) {

            $.ajax({

                url: searchUrl,

                dataType: 'jsonp',

                data: {

                    'action': "opensearch",

                    'format': "json",

                    'search': request.term

                },

                success: function (data) {

                    response(data[1]);

                }

            });

        }

    });



    button.click(function () {

        articles.empty();

        toSearch = input.val();

        ajaxArticleData();

    });

});


<!DOCTYPE html>

<html>

<head>

    <title>My Wikipedia Viewer</title>

    <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/themes/smoothness/jquery-ui.css" />

</head>

<body>

    <section>

        <input type='text' value='' placeholder='Search for...'>

        <button>Search</button>

    </section>

    <section class='articles'></section>



    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/jquery-ui.min.js"></script>

</body>

</html>


 类似资料:
  • 问题内容: 有什么方法可以使用API​​访问任何维基百科页面的缩略图?我的意思是方框中右上角的图像。是否有任何API? 问题答案: http://en.wikipedia.org/w/api.php 看看。 它返回已解析页面中使用的图像文件名数组。然后,您可以选择进行另一个API调用以找出完整的图像URL,例如: 或通过文件名的hash计算URL。 不幸的是,虽然返回的图像数组是在页面上找到的顺序

  • 我一直在寻找一种基于搜索字符串查询wikipedia api的方法,该搜索字符串包含以下属性的文章列表: 标题 片段/描述 与文章相关的一个或多个图像。 我还必须使用jsonp进行查询。 我尝试过使用list=search参数 http://en.wikipedia.org/w/api.php?action=query 但它似乎忽略了prop=images,我还尝试了使用prop=imageinf

  • 我有mp4视频文件,我需要在我的页面上加载,我正在使用MSE,但我不知道如何将我的视频分成带有. m4s扩展名的片段,以head. m4s作为父片段,并包含有关我的所有信息视频文件存储在其中?请帮助。

  • 问题内容: 我尝试使用Python的urllib来获取Wikipedia文章: 但是,我得到的不是HTML页面,而是以下响应:错误-Wikimedia Foundation: 维基百科似乎阻止了不是来自标准浏览器的请求。 有人知道如何解决此问题吗? 问题答案: 你需要使用的urllib2是superseedes的urllib在蟒蛇STD库,以改变用户代理。 直接从例子

  • 问题内容: 我正在编写一些Java代码,以便使用Wikipedia在文本上实现NLP任务。如何使用JSoup提取Wikipedia文章的所有文本(例如,http://en.wikipedia.org/wiki/Boston中的所有文本)? 问题答案: 当然,您可以通过这种方式检索格式化的内容。如果您想要“原始”内容,则可以使用或使用call 过滤结果。

  • 我找不到如何从< code>Activity更改fragment的< code>textview。我有4个文件: frag_class.xml有textView,我想更改MainActivity.java的文本。FragmentClass扩展了片段,此片段显示在MainActivity中,FragmentClass具有: 在MainActivity中,我尝试了这个: 但可悲的是,这段代码给了我Nu