Получение контента инфобокса Википедии с помощью JQuery - PullRequest
6 голосов
/ 20 декабря 2011

Я собираюсь использовать JQuery для извлечения содержимого информационного блока Википедии, содержащего информацию о компании.

Я думаю, что я почти на месте, но я просто не могу сделать последний шаг на этом пути

var searchTerm="toyota";
var url="http://en.wikipedia.org/w/api.php?action=parse&format=json&page=" + searchTerm+"&redirects&prop=text&callback=?";
$.getJSON(url,function(data){
  wikiHTML = data.parse.text["*"];
  $wikiDOM = $(wikiHTML);
  $("#result").append($wikiDOM.find('.infobox').html());
});

Первая часть работает - wikiHTML содержит содержимое страницы, проанализированное API Википедии в формате HTML

Содержит таблицу с содержимым инфобокса:

 <table class="infobox vcard" cellspacing="5" style="width:22em;">

результат - просто заполнитель пустой таблицы для помещения данных в

. Он работает с некоторыми другими элементами на странице - например, замена .infobox на .logo работает отлично.

Рада предоставить больше информации, но я потратил часы на это и перепробовал так много перестановок, что я даже не уверен, что уже актуально ...

TIA

1 Ответ

5 голосов
/ 20 декабря 2011

Кажется, что JSON из Википедии не возвращает элемент упаковочного документа. Похоже, это препятствует тому, чтобы любые атрибуты элементов, которые находятся в корне, были доступны для выбора. Попробуйте это:

var searchTerm="toyota";
var url="http://en.wikipedia.org/w/api.php?action=parse&format=json&page=" + searchTerm+"&redirects&prop=text&callback=?";
$.getJSON(url,function(data){
  wikiHTML = data.parse.text["*"];
  $wikiDOM = $("<document>"+wikiHTML+"</document>");
  $("#result").append($wikiDOM.find('.infobox').html());
});

Надеюсь, что это работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...