PHP +维基百科:从维基百科文章的第一段获取内容?

时间:2011-05-25 17:04:07

标签: xpath domdocument wikipedia wikipedia-api domxpath

我正在尝试使用维基百科的API(api.php)来获取由链接提供的维基百科文章的内容(例如:http://en.wikipedia.org/wiki/Stackoverflow)。 我想要的是获得第一段(在Stackoverflow维基文章的例子中是: Stack Overflow是Stack Exchange网络的一个网站部分[2] [3],其中包含广泛的问题和答案计算机编程的主题。[4] [5] [6] )。

我将用它做一些数据操作。

我尝试过使用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; 

但我无法在变量$ wikiPage中获取HTML内容。

我不知道这是否是最佳或最佳的方式,所以请随意评论,否则任何建议或解决方案都将非常感激。

谢谢你 - 梅斯蒂卡

1 个答案:

答案 0 :(得分:2)

您正在获取重定向页面的内容。将'Stackoverflow'替换为'Stack_Overflow',它应该可以工作。

API确实支持&amp; redirects选项,它将为您解决重定向。