2014-01-30 4 views
1

Я пытаюсь извлечь информацию в сером поле (сводка/информация) для ссылки, такой как http://en.wikipedia.org/wiki/DressBarn (информация в сером поле/правый столбец, например, тип и т. Д.).Wikipedia API - извлечение содержимого окна

Я использую это http://en.wikipedia.org/w/api.php?action=query&prop=extracts|info&exintro&titles=DressBarn&format=json&redirects&inprop=url&indexpageids - и он возвращает только резюме.

Я попытался поэкспериментировать с песочницей, но не смог понять, как извлечь информацию, содержащуюся в сером поле.

+0

Посмотрите на http://dbpedia.org, e. г. http://live.dbpedia.org/page/DressBarn. – svick

+0

Возможный дубликат [Получение раздела infobox википедии] (http://stackoverflow.com/q/3312346) (или, возможно, [содержимое инфобокса википедии] (http://stackoverflow.com/q/8088226) или [ mediawiki api: как получить инфобокс из статьи в Википедии] (http://stackoverflow.com/q/7638402) или [Получить все шаблоны Википедии Infobox и все страницы, используя их] (http://stackoverflow.com/q/8000211) или [другие] (http://stackoverflow.com/search?q=wikipedia+infobox) ...) –

+1

Я вижу все эти повторяющиеся вопросы, но ** все ** из них - это просто ссылки только на ответы на DBPedia , Я проголосовал за то, чтобы оставить это открытым, потому что, по-моему, было бы намного лучше, по крайней мере, иметь примерный код того, как именно этот вопрос будет отвечать с помощью DBPedia. – Joeytje50

ответ

1

Вы можете использовать PHP Simple HTML DOM Parser.

<?php 
//The folder where you uploaded simple_html_dom.php 
require_once('/homepages/0/d502303335/htdocs/js/simple_html_dom.php'); 

//Wikipedia page to parse 
$html = file_get_html('https://en.wikipedia.org/wiki/Burger_King'); 

foreach ($html->find ('table[class=infobox vcard]') as $element) { 

    $cells = $element->find('td'); 

    $i = 0; 

    foreach($cells as $cell) { 

     $left[$i] = $cell->plaintext; 

     if (!(empty($left[$i]))) { 

      $i = $i + 1; 

     } 

    } 

    $cells = $element->find('th'); 

    $i = 0; 

    foreach($cells as $cell) { 

     $right[$i] = $cell->plaintext; 

     if (!(empty($right[$i]))) { 

      $i = $i + 1; 

     } 

    } 

    print_r ($right); 

    echo "<br><br><br>"; 

    print_r ($left); 

    //If you want to know what kind of industry burger king is 
    echo "Burger king is $right[2], $left[2] 

} 

?> 

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

Смежные вопросы