javascript - 从标题获取维基百科 pageid

标签 javascript json parsing wikipedia-api

我正在尝试从维基百科文章中获取图像。我有文章的标题,但似乎我需要知道 pageid 才能访问缩略图。如何从标题中获取 pageid?

我的 JavaScript 代码:

$.getJSON("http://en.wikipedia.org/w/api.php?action=query&titles=" + article + "&prop=pageimages&format=json&pithumbsize=350", function (data) {
    imageURL = data.query.pages[/* pageid */].thumbnail.source;
});

这是我正在解析的内容(例如 article = "Car"):

{"query":{"pages":{"13673345":{"pageid":13673345,"ns":0,"title":"Car","thumbnail":{"source":"http://upload.wikimedia.org/wikipedia/commons/thumb/1/1e/Benz-velo.jpg/100px-Benz-velo.jpg","width":100,"height":80},"pageimage":"Benz-velo.jpg"}}}}

^ 看来我首先需要知道它是 13673345 索引。

最佳答案

OP 询问如何“访问缩略图”,即返回数据中的 URL。他没有询问如何访问缩略图后面的完整图像......这是其他答案解决的问题。

OP 的问题是数据与页面 ID 相关联。事实上,查询可能返回不止一篇文章,在这种情况下会有多个页面 ID 和缩略图。

以下查询返回代码片段中使用的数据:

http://en.wikipedia.org/w/api.php?action=query&titles=Stack_Overflow&prop=pageimages&format=json&pithumbsize=350

并且 OP 可以使用此代码提取页面 ID:

var pageid = [];
for( var id in data.query.pages ) {
    pageid.push( id );
}

运行下面的代码片段进行测试。

<html>
<body>
  
<img id="thumbnail"/>  
  
<script type="text/javascript">
 
var data =  {
      "query":
      {
        "normalized": [
        {
          "from": "Stack_Overflow",
          "to": "Stack Overflow"
        }],
        "pages":
        {
          "21721040":
          {
            "pageid": 21721040,
            "ns": 0,
            "title": "Stack Overflow",
            "thumbnail":
            {
              "source": "http://upload.wikimedia.org/wikipedia/commons/thumb/6/6a/Stack_Overflow_homepage.png/350px-Stack_Overflow_homepage.png",
              "width": 350,
              "height": 185
            },
            "pageimage": "Stack_Overflow_homepage.png"
          }
        }
      }
    };
	

  
    // get the page IDs
	var pageid = [];
	for( var id in data.query.pages ) {
		pageid.push( id );
	}
	
    // display the thumbnail using a page ID
    document.getElementById('thumbnail').src = data.query.pages[ pageid[0] ].thumbnail.source;
  
  </script>
 
  </body>
  </html>

关于javascript - 从标题获取维基百科 pageid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30006183/

相关文章:

javascript - 在单选按钮 jQuery 中传递数组值

javascript - 在主体 onLoad 上退出函数

javascript - Bootstrap-table 如何使用 exportOptions

php - 从 $_POST 中的 json 中读取关联数组

json - 如何在 flutter 中解析graphql响应

c# - 将字符串读入 Json

html - 将纯文本列表转换为 html

javascript - 为什么我的 Auth0 在 React 中找不到我的回调路由?

c++ - 正则表达式是否足以分析大文本?

C++ 将输入字符串解析为变量