0

我正在创建一个 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;
        }
    }

?>
4

0 回答 0