引用转载phpphp抓取一言数据
YuanMo简介
来源于泽泽社长,仅供学习。原文地址:
通过php来获取一言的数据,并以txt的格式输出,下面直接上代码 一言原地址:https://github.com/kokororin/hitokoto/blob/master/hitokoto.json
食用代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| $nr='[<br>'; //用于拼接内容,使其变成json格式 //设置超时参数 $opts=array( "http"=>array( "method"=>"GET", "timeout"=>3 ), ); $context = stream_context_create($opts); //超时这个部分我不懂,在网上随便复制的 for($i=0;$i<1461;$i++){ //设置循环变量,让其循环1461次 $json_string =file_get_contents('https://v1.hitokoto.cn/', false, $context); //抓取一条一言的json内容 $data = json_decode($json_string); //对JSON数据进行解码,转换为PHP变量 $id = $data->id; //定义id为一言json的id $a= array(); //创建一个空数组 $isin = in_array($id,$a); //判断一言id是否存在数组中,用来过滤重复抓取的一言数据 if($isin){ $i--; //如果存在,则i-1,然后重新执行for循环 }else{ array_push($a,$data->id); //不存在,将一言id存在数组里 $data_json = json_encode($data); //转为json格式 $dh=',<br>'; if($i==0){$dh='';} $nr=$nr.$dh.$data_json; //拼接内容,使其跟json格式对应 }
} echo $nr.'<br>]'; //循环结束,输出最终内容
|
其中的循环变量可以根据自己的需求进行修改,你需要多少就设置多少,但可能有个问题,就是设置太多会出现问题。