1

我希望使用 Wikipedia/Mediawiki API 提取 infobox 中的第一个图像 - 大多数 Wikipedia 页面上的类名 infobox 的表

这是我迄今为止尝试过的 -

$.getJSON("http://en.wikipedia.org/w/api.php?action=mobileview&format=json&page=mumbai&redirect=no&sections=0&prop=text&sectionprop=toclevel%7Clevel%7Cline%7Cnumber%7Cindex%7Cfromtitle%7Canchor&callback=?", function(json) { 
var wikitext = json.mobileview.sections[0].text;
var img = $(wikitext).find('img:first').attr("src");

/*
//how can i make this work?

//selector for element with multiple classes - http://stackoverflow.com/questions/1041344/jquery-multiple-class-selector
  var infoboximg = $(wikitext).find('table.infobox.geography.vcard img:first').attr("src");
console.log(infoboximg);  
*/

$('#pic').append('<img src="http://' + img + '" />');

}
);          

你可以在这里试试这个片段 - http://jsbin.com/erudum/5/

如何修复代码以获取具有名称信息框的表格中的第一张图像?

4

1 回答 1

2

您只需要获取 src 吗?为什么不像这样附加img

$.getJSON("http://en.wikipedia.org/w/api.php?action=mobileview&format=json&page=mumbai&redirect=no&sections=0&prop=text&sectionprop=toclevel%7Clevel%7Cline%7Cnumber%7Cindex%7Cfromtitle%7Canchor&callback=?", function(json) { 
        var wikitext = json.mobileview.sections[0].text;
        var img = $(wikitext).find('img:first');
        $('#pic').append(img);
    }
);

http://jsfiddle.net/wirey00/Kr46e/

编辑

在查看返回文本之后.. 它实际上是一个返回的 ELEMENTS 数组.. 该表是第 5 个元素,因此您可以使用 jQuery 中的 .eq() 方法获取它

$.getJSON("http://en.wikipedia.org/w/api.php?action=mobileview&format=json&page=mumbai&redirect=no&sections=0&prop=text&sectionprop=toclevel%7Clevel%7Cline%7Cnumber%7Cindex%7Cfromtitle%7Canchor&callback=?", function(json) { 
        var wikitext = json.mobileview.sections[0].text;
        var img = $(wikitext).eq(4).find('img:first').attr('src');
        $('#pic').append('<img src="' + img + '"/>');
    }
);

你可以做一个console.log来看看我的意思

console.log($(wikitext));

http://jsfiddle.net/wirey00/Jp7rn/

再次编辑

我弄清楚了为什么它会以数组的形式返回。文中的引号把它扔掉了。我要做的是将整个内容附加到..可能是隐藏字段或其他内容..然后遍历它并获取 img 文本。然后再次删除整个东西。这是一个例子

$.getJSON("http://en.wikipedia.org/w/api.php?action=mobileview&format=json&page=mumbai&redirect=no&sections=0&prop=text&sectionprop=toclevel%7Clevel%7Cline%7Cnumber%7Cindex%7Cfromtitle%7Canchor&callback=?", function(json) { 
    var wikitext = json.mobileview.sections[0].text;
    $('#pic').hide().append(wikitext); // hide the div then append whole string
    var img = $('#pic').find('.infobox img:first').attr('src');// find the src
    $('#pic').show().html('<img src="' + img + '"/>'); // show and append
    }
);

http://jsfiddle.net/Jp7rn/1/

于 2012-10-19T19:10:16.547 回答