我正在创建一个webapp,收集Twitter用户关于某些关键字(在PHP中)的所有评论,并且我使用此URL:http://search.twitter.com/search.json。
问题是:我使用for循环来检索所有注释,当涉及到第21页时,它会抛出此错误:
Warning: file_get_contents(http://search.twitter.com/search.json?page=21&max_id=254777971188039680&q=love&rpp=100&result_type=mixed): failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in C:\xampp\htdocs\cs2\action.php on line 30
但是,如果我通过输入该网址访问上述链接(http://search.twitter.com/search.json?page=21&max_id=254777971188039680&q=love&rpp=100&result_type=mixed)浏览器的地址栏,它仍然返回结果!
那么,为什么这个链接可以通过浏览器直接访问,但file_get_contents
函数无法读取?
//添加了代码:
<?php
$keyword1 = $_POST["key"];
$keyword = str_replace(' ', '%20',$keyword1);
$url = "http://search.twitter.com/search.json?q=$keyword&rpp=100&result_type=mixed";
$json_string = file_get_contents($url);
$data = json_decode($json_string);
$olddata = $data;
$size = count($data->{"results"});
$_SESSION["dem"] = 0;
for($i = 0; $i < $size;$i++){
echo($data->{"results"}[$i]->{"text"}."<br/>");
$_SESSION["dem"]++;
}
while(true){
try{
sleep(0.01);
$url = "http://search.twitter.com/search.json".$olddata->{"next_page"};
if(strcmp($url,"http://search.twitter.com/search.json") == 0) break;
$json_string = file_get_contents($url);
$data = json_decode($json_string);
$olddata = $data;
$size = count($data->{"results"});
for($i = 0; $i < $size;$i++){
echo($data->{"results"}[$i]->{"text"}."<br/>");
$_SESSION["dem"]++;
}
}
catch(Exception $e){
break;
}
}
?>