php抓取一言数据

简介

来源于泽泽社长,仅供学习。原文地址:

通过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>]';
//循环结束,输出最终内容

其中的循环变量可以根据自己的需求进行修改,你需要多少就设置多少,但可能有个问题,就是设置太多会出现问题。