我正在创建一个 web 应用程序,它收集 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
但是,如果我通过将 URL 输入到浏览器的地址栏来访问上面的链接(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;
}
}
?>