本来我博客的一言,都是来自https://github.com/kokororin/hitokoto/blob/master/hitokoto.json
的,400多条的样子。
刚刚自己有点不满足这些了,于是就像自己能不能试着扒一下一言的数据呢。
从https://hitokoto.cn/status
这个页面发现一言数目1461,应该就是一共的数量吧???
直接请求https://v1.hitokoto.cn
就可以获得一条一言的json
然后开始弄
$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>]';
//循环结束,输出最终内容
刚写完的瞬间,内心只剩下了“完美”二字,然而我一运行,转圈圈...转圈圈...然后就404了。
然后我内心依旧剩下两个字“垃圾”。
然后我就将循环次数由1461改成了300,准备分批抓取,手动将抓取结果存txt,同时将这300条的数据id都输出出来,然后手动添加到原本建立的空数组中,然后进行第二批抓取...
然后第三批...
等等...
最后我抓了1500条数据,我就不抓了累了,不过官方不是说就1461条数据吗?好奇怪!
然后用https://www.bejson.com/
验证了下格式,没啥问题就ok了
版权属于:泽泽社长
本文链接:https://blog.zezeshe.com/archives/php-hitokoto-zhua.html
本站未注明转载的文章均为原创,并采用
CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!
话说我昨天也想写个来着,但是最后用了点取巧的办法。
挨个捉到txt里,然后没捉一次就判断一下文件里有没有这条,没有就写入,有就跳过,但是这样整体就没法用json,我就只能把写入的单独一条用json,然后读取就随机行数,然后直接转数组……2333
Hello,我也开发了一个 关于古诗词的 一言 API,可以根据场景智能推荐。不知道博主有没兴趣看一看,我们还提供炒鸡方便的安装代码。一起学习哈哈。 https://www.jinrishici.com
最后的视频有什么特殊含义?
最后是首歌吧,没啥意思,分享音乐
一言抓取的图好像挂了,顺便问下音乐插件是啥
最近云存储有点不稳定哈,音乐是我魔改的,样式模仿kkplayer,音乐kkplayer不开源,未经授权不能使用哈,所以只好自己仿个样子自嗨下
记得好像还有一个.us的一言站啊...那个哪去了
挂了,之前有段时间诈尸,我把数据都拖了(
我也不知道,可能gg了
//不存咋,将一言id存在数组里
错字,绝了.
哇,我好像每次都有错字QAQ