可能重复:
Getting content using wikipedia API
Using PHP, how do I get the first paragraph of a Wikipedia article with the MediaWiki API?
这主要是与XML相关的问题。
我正在尝试使用MediaWiki API执行此操作。
我设法以XML格式获得响应(如果更容易,可以更改为JSON),并且我在响应中看到了我需要的所有内容。例如:
http://en.wikipedia.org/w/api.php?format=xml&action=query&titles=War%20and%20Peace&prop=revisions&rvprop=content&format=xmlfm
我在这里使用xmlfm是出于格式化的原因。在PHP中我正在做:
$request = "http://en.wikipedia.org/w/api.php?format=xml&action=query&titles=War%20and%20Peace&prop=revisions&rvprop=content&format=xml";
$response = @file_get_contents($request);
$wxml = simplexml_load_string($response);
var_dump($wxml);
打印出XML中的所有内容。我的问题是,如何从中得到第一段?
我可以从完整的文章中解析它,所以基本上我要问的是,如何从这个XML中获取文章文本?当然,如果有办法直接找到第一段,那将是最好的。
答案 0 :(得分:5)
我肯定会说你正在寻找this。
如果要检索第一部分中的所有内容(而不仅仅是第一段):
// action=parse: get parsed text
// page=Baseball: from the page Baseball
// format=json: in json format
// prop=text: send the text content of the article
// section=0: top content of the page
$url = 'http://en.wikipedia.org/w/api.php?action=parse&page=Baseball&format=json&prop=text§ion=0';
$ch = curl_init($url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_USERAGENT, "TestScript"); // required by wikipedia.org server; use YOUR user agent with YOUR contact information. (otherwise your IP might get blocked)
$c = curl_exec($ch);
$json = json_decode($c);
$content = $json->{'parse'}->{'text'}->{'*'}; // get the main text content of the query (it's parsed HTML)
// pattern for first match of a paragraph
$pattern = '#<p>(.*?)</p>#s'; // http://www.phpbuilder.com/board/showthread.php?t=10352690
if(preg_match_all($pattern, $content, $matches))
{
// print $matches[0]; // content of the first paragraph (including wrapping <p> tag)
print strip_tags(implode("\n\n",$matches[1])); // Content of the first paragraph without the HTML tags.
}