QQ爹博客 QQ爹博客

php抓取一言数据

in 代码相关 文章转载请注明来源!

本来我博客的一言,都是来自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了

一言抓取
jrotty WeChat Pay

微信打赏

jrotty Alipay

支付宝打赏

文章二维码

扫描二维码,在手机上阅读!

本文基于《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
文章链接:https://qqdie.com/archives/php-hitokoto-zhua.html (转载时请注明本文出处及文章链接)

php一言
发表新评论
已有 10 条评论
  1. 乱码
    乱码
    回复

    Hello,我也开发了一个 关于古诗词的 一言 API,可以根据场景智能推荐。不知道博主有没兴趣看一看,我们还提供炒鸡方便的安装代码。一起学习哈哈。 https://www.jinrishici.com

  2. 大雄
    大雄
    回复

    最后的视频有什么特殊含义?

    1. Jrotty
      Jrotty本文作者
      回复

      @大雄 最后是首歌吧,没啥意思,分享音乐

  3. mikusa
    mikusa
    回复

    一言抓取的图好像挂了,顺便问下音乐插件是啥

    1. Jrotty
      Jrotty本文作者
      回复

      @mikusa 最近云存储有点不稳定哈,音乐是我魔改的,样式模仿kkplayer,音乐kkplayer不开源,未经授权不能使用哈,所以只好自己仿个样子自嗨下

  4. 尚寂新
    尚寂新
    回复

    记得好像还有一个.us的一言站啊...那个哪去了

    1. 黎明余光
      黎明余光
      回复

      @尚寂新 挂了,之前有段时间诈尸,我把数据都拖了(

    2. Jrotty
      Jrotty本文作者
      回复

      @尚寂新 我也不知道,可能gg了

  5. 变态鹅
    变态鹅
    回复

    //不存咋,将一言id存在数组里
    错字,绝了.

    1. Jrotty
      Jrotty本文作者
      回复

      @变态鹅 哇,我好像每次都有错字QAQ

前篇 后篇