2

ウィキペディアの API (api.php) を使用して、リンク ( http://en.wikipedia.org/wiki/Stackoverflowなど) で提供されるウィキペディアの記事のコンテンツを取得しようとしています。そして、私が望むのは、最初の段落を取得することです (Stackoverflow wiki 記事の例では、Stack Overflow は、Stack Exchange ネットワーク [2][3] の幅広いトピックに関する質問と回答を提供する Web サイトの一部です)。コンピュータプログラミング[4][5][6])。

私はそれを使っていくつかのデータ操作を行うつもりです。

API の URL を試してみました: 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; 

しかし、変数 $wikiPage で HTML コンテンツを取得できません。

これが最善または最適な方法であるかどうかはわかりませんので、お気軽にコメントしてください。そうでない場合は、提案や解決策をいただければ幸いです。

ありがとう
- メスティカ

4

1 に答える 1

2

リダイレクト ページのコンテンツを取得しています。「Stackoverflow」を「Stack_Overflow」に置き換えると、機能するはずです。

API は、リダイレクトを解決する &redirects オプションをサポートしています。

于 2011-05-25T20:48:29.287 に答える