0

いくつかのキーワード (PHP) に関する Twitter ユーザーのすべてのコメントを収集する webapp を作成しています。この 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