如何使用Wikipedia API - PHP逐节获取维基百科内容

时间:2013-12-06 14:06:32

标签: php curl preg-replace mediawiki wikipedia-api

有没有更好的方法从维基百科中获取特定部分的文本内容。我有以下代码来跳过一些部分,但是这个过程花费的时间太长,无法获取正在寻找的数据。

    for($i=0;$i>10;$i++){
      if($i != 2 || $i != 4){
          $url = 'http://en.wikipedia.org/w/api.php?action=parse&page=ramanagara&format=json&prop=text&section='.$i;
          $ch = curl_init($url);
          curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
          curl_setopt ($ch, CURLOPT_USERAGENT, "TestScript"); 
          $c = curl_exec($ch);
          $json = json_decode($c);

          $content = $json->{'parse'}->{'text'}->{'*'};
          print preg_replace('/<\/?a[^>]*>/','',$content);
       }
    }

1 个答案:

答案 0 :(得分:1)

对于初学者,你告诉它要循环,直到$i 大于 10,这实际上会循环直到服务器请求超时。将其更改为$i<10,或者如果您只需要少数几个部分,请尝试:

foreach (array(1,3,5,6,7) as $i)
    //your code

其次,将JSON解码为关联数组,如下所示:

$json = json_decode($c, true);

$json['parse']['text']['*']这样引用它更容易使用,但这取决于你。

第三,你会发现strip_tags()可能比使用正则表达式剥离标签更快,更准确。