有没有更好的方法从维基百科中获取特定部分的文本内容。我有以下代码来跳过一些部分,但是这个过程花费的时间太长,无法获取正在寻找的数据。
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§ion='.$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);
}
}
答案 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()
可能比使用正则表达式剥离标签更快,更准确。