2011-05-25 171 views
2

我正在嘗試使用維基百科的API(api.php)獲取鏈接提供的維基百科文章的內容(如:http://en.wikipedia.org/wiki/Stackoverflow)。 而我想要的是獲得第一段(在Stackoverflow wiki文章的例子中是:Stack Overflow是Stack Exchange網絡[2] [3]的網站組成部分,它提供了廣泛的問題和解答計算機編程中的主題[4] [5] [6])。PHP +維基百科:從維基百科文章的第一段獲取內容?

我打算對它進行一些數據處理。

我試過用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內容。

我不知道這是否是最好的或最理想的方式來做到這一點,請隨時評論,否則任何建議或解決方案將非常感激。

謝謝
- Mestika

+0

將'&section = 0'添加到您的API調用中可以減少您自己解析前導節的需求,它只返回第一個。 – Ainali 2014-07-19 14:20:33

回答

2

你得到一個重定向頁面的內容。用'Stack_Overflow'替換'Stackoverflow',它應該可以工作。

該API確實支持&重定向選項,該選項將爲您解析重定向。