PHP + Википедия: Получить контент из первого абзаца в статье в Википедии? - PullRequest
2 голосов
/ 25 мая 2011

Я пытаюсь использовать API Википедии (api.php), чтобы получить содержимое статьи Википедии, предоставленной по ссылке (например: http://en.wikipedia.org/wiki/Stackoverflow).). И что я хочу, это получить первый абзац (который вПример вики-статьи Stackoverflow: Переполнение стека является частью веб-сайта сети Stack Exchange [2] [3], где представлены вопросы и ответы по широкому кругу тем в компьютерном программировании. [4] [5] [6] ).

Я собираюсь выполнить с ним некоторые манипуляции с данными.

Я пытался использовать URL-адрес API: http://en.wikipedia.org/w/api.php?action=parse&page=Stackoverflow&format=xml, но это дает мнекакая-то ошибка. Выводит:

<api>
<parse displaytitle="Stackoverflow" revid="289948401">
<text xml:space="preserve">
<ol> <li>REDIRECT <a href="/wiki/Stack_Overflow" title="Stack Overflow">Stack Overflow</a></li> </ol> <!-- NewPP limit report Preprocessor node count: 1/1000000 Post-expand include size: 0/2048000 bytes Template argument size: 0/2048000 bytes Expensive parser function count: 0/500 --> <!-- Saved in parser cache with key enwiki:pcache:idhash:21772484-0!*!0!!*!* and timestamp 20110525165333 -->
</text>
<langlinks/>
<categories/>
<links>
<pl ns="0" exists="" xml:space="preserve">Stack Overflow</pl>
</links>
<templates/>
<images/>
<externallinks/>
<sections/>
</parse>
</api>

Я нашел этот фрагмент кода, который я пробовал

$doc = new DOMDocument();
$doc->loadHTML($wikiPage);
$xpath = new DOMXpath($doc);
$nlPNodes = $xpath->query('//div[@id="bodyContent"]/p');
$nFirstP = $nlPNodes->item(0);
$sFirstP = $doc->saveXML($nFirstP);
echo $sFirstP; 

, но я не могу получить содержимое HTML в переменной $wikiPage.

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

Спасиботы
- Местика

1 Ответ

2 голосов
/ 26 мая 2011

Вы получаете содержимое страницы перенаправления.Замените «Stackoverflow» на «Stack_Overflow», и он должен работать.

В API есть поддержка параметра & redirects, который разрешит перенаправления для вас.

...