首页后端开发JAVAphp抓取一言数据

php抓取一言数据

时间2023-04-25 02:18:01发布访客分类JAVA浏览556
导读:本来我博客的一言,都是来自https://github.com/kokororin/hitokoto/blob/master/hitokoto.json的,400多条的样子。刚刚自己有点不满足这些了,于是就像自己能不能试着扒一下一言的数据呢...

本来我博客的一言,都是来自https://github.com/kokororin/hitokoto/blob/master/hitokoto.json的,400多条的样子。

刚刚自己有点不满足这些了,于是就像自己能不能试着扒一下一言的数据呢。 从https://hitokoto.cn/status这个页面发现一言数目1461,应该就是一共的数量吧???

直接请求https://v1.hitokoto.cn就可以获得一条一言的json

然后开始弄

$nr='[
';
    
//用于拼接内容,使其变成json格式
//设置超时参数
$opts=array(
        "http"=>
    array(
                "method"=>
    "GET",
                "timeout"=>
    3
                ),
        );
    
$context = stream_context_create($opts);
    
//超时这个部分我不懂,在网上随便复制的
for($i=0;
    $i1461;
$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=',
';

if($i==0){
    $dh='';
}
    
 $nr=$nr.$dh.$data_json;
 
//拼接内容,使其跟json格式对应
}

 
}
    
echo $nr.'
]';
    
//循环结束,输出最终内容

刚写完的瞬间,内心只剩下了“完美”二字,然而我一运行,转圈圈...转圈圈...然后就404了。

然后我内心依旧剩下两个字“垃圾”。

然后我就将循环次数由1461改成了300,准备分批抓取,手动将抓取结果存txt,同时将这300条的数据id都输出出来,然后手动添加到原本建立的空数组中,然后进行第二批抓取... 然后第三批... 等等...

最后我抓了1500条数据,我就不抓了累了,不过官方不是说就1461条数据吗?好奇怪!

然后用https://www.bejson.com/验证了下格式,没啥问题就ok了

一言抓取

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

phptxt博客数据数组

若转载请注明出处: php抓取一言数据
本文地址: https://pptw.com/jishu/7862.html
php设计模式(五):生成器模式(Builder) php如何对preg_replace匹配的内容进行MD5/base64加密?

游客 回复需填写必要信息