最新公告
  • 欢迎您光临模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • PHP 自动爬毒汤日历搭建一言 API

    正文概述 模版网   2020-05-23   173

    什么是毒汤日历

    毒汤日历是一本有毒的日历,每天用毒鸡汤来唤醒你。
    你甚至不用打开日历,打开 App 的推送,每天会定时送上一杯毒鸡汤。
    自己也能制作毒鸡汤?那太好了,毒性够强,如果让别人扎到心你就厉害了。
    每条毒汤可以点扎心、发毒评,或者转发给别人,让别人也扎扎心。
    以上为毒汤日历 APP 介绍,官网 http://www.dutangapp.cn/ 当然官网什么都没有
    :yum:

    准备工作

    通过抓包得到了毒汤日历的 API
    http://www.dutangapp.cn/u/toxic?date=2018-6-18
    API 后面的 data=xxxx-xx-xx 为日期

    一、开始爬句子
    <?php
    header("Content-type: text/html; charset=utf-8"); //设置编码 utf-8 
    $utime = date("Y-m-d");//api的尾缀时间
    //使用curl提高运行速度 不用动
    function httpGet($url) {
        $curl = curl_init();
        $httpheader[] = "Accept:*/*";
        $httpheader[] = "Accept-Language:zh-CN,zh;q=0.8";
        $httpheader[] = "Connection:close";
        curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" );
        curl_setopt($curl, CURLOPT_HTTPHEADER, $httpheader);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_TIMEOUT, 3);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($curl, CURLOPT_URL, $url);
        $res = curl_exec($curl);
        curl_close($curl);
        return $res;
    }
    $myfile = fopen("binduyan.txt", "a+");//创建文件保存抓取的句子
    //循环次数 2018-3-21 至现在日期相差的天数 
    for ($i=1; $i<83; $i++) { 
        $json_string =httpGet('http://www.dutangapp.cn/u/toxic?date='.$utime);//curl 自定义函数访问api
        $data= json_decode($json_string,true);//解析json 转为php
     //2018-4-11之前只有一条数据 so 加判断
    if (isset($data['data']['0']['data'])) {
         $text1= $data['data']['0']['data']."\n"; 
        fwrite($myfile, $text1);
    }
    if (isset($data['data']['1']['data'])) {
        $text2= $data['data']['1']['data']."\n";
       fwrite($myfile, $text2);
    }   
    if (isset($data['data']['2']['data'])) {
        $text3= $data['data']['2']['data']."\n";
        fwrite($myfile, $text3);
    }
    
        $utime= date("Y-m-d",strtotime("-".strval($i)." day")); //每循环一次 当前日期减去循环变量
    
     } 
    fclose($myfile);
    echo "ok";
    ?>
    
    访问这个页面后 会在自动生成 binduyan.txt 文件,大概 200 多条。

    搭建 API

    <?php
    header("Content-type: text/html; charset=utf-8"); //设置编码 utf-8 
    //获取句子文件的绝对路径
    //如果你介意别人可能会拖走这个文本,可以把文件名自定义一下,或者通过Nginx禁止拉取也行。
    $path = dirname(__FILE__);
    $file = file($path."/binduyan.txt");
    
    //随机读取一行
    $arr  = mt_rand( 0, count( $file ) - 1 );
    $content  = trim($file[$arr]);
    
    //编码判断,用于输出相应的响应头部编码
    if (isset($_GET['charset']) && !empty($_GET['charset'])) {
        $charset = $_GET['charset'];
        if (strcasecmp($charset,"gbk") == 0 ) {
            $content = mb_convert_encoding($content,'gbk', 'utf-8');
        }
    } else {
        $charset = 'utf-8';
    }
    
    //格式化判断,输出js或纯文本
    if ($_GET['encode'] === 'js') {
        echo "function binduyan(){document.write('" . $content ."');}";
    } else {
        echo $content;
    }
    ?>
    

    使用方法

    将 API 代码保存为 index.php 与 binduyan.txt 上传到网站 binduyan 目录内
    请求地址

    http://你的域名/binduyan/(返回随机一句)

    http://你的域名/binduyan/index.php/?encode=js(返回 js 格式)

    博客集成

    <script type="text/javascript" src="http://你的域名/binduyan/index.php/?encode=js&charset=utf-8"></script>
    <div id="binduyan"><script>binduyan()</script></div>
    
    你也可以自己美化
    你以为这就完了吗?
    区区 200 条怎么能够用呢
    毒汤日历每日都会更新 那么为什么不自动每天抓取呢?
    <?php
    header("Content-type: text/html; charset=utf-8"); //设置编码 utf-8 
    $utime = date("Y-m-d");
    $str = file_get_contents('data.txt');
    $d=date('Y/m/d H:i',strtotime($str));
    //请更改监控key 默认binduyan
    if($_GET['p']==='binduyan'){
    //判断今天是否已爬
        if(strtotime($utime)>strtotime($d)){
    //爬虫开始    
    $utime = date("Y-m-d");//api的尾缀时间
    //使用curl提高运行速度 不用动
    function httpGet($url) {
        $curl = curl_init();
        $httpheader[] = "Accept:*/*";
        $httpheader[] = "Accept-Language:zh-CN,zh;q=0.8";
        $httpheader[] = "Connection:close";
        curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" );
        curl_setopt($curl, CURLOPT_HTTPHEADER, $httpheader);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_TIMEOUT, 3);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($curl, CURLOPT_URL, $url);
        $res = curl_exec($curl);
        curl_close($curl);
        return $res;
    }
    //定义写入函数 
    function myfile($txt){
        $myfile = fopen("binduyan.txt", "a+");
        fwrite($myfile,$txt);
        fclose($myfile);
    }
    
        $json_string =httpGet('http://www.dutangapp.cn/u/toxic?date='.$utime);//curl 自定义函数访问api
        $data= json_decode($json_string,true);//解析json 转为php
     //2018-4-11之前只有一条数据 so 加判断 
    if (isset($data['data']['0']['data'])) {
         $text1="\n". $data['data']['0']['data']."\n";
         myfile($text1);
     }
    if (isset($data['data']['1']['data'])) {
        $text2= $data['data']['1']['data']."\n";
        myfile($text2);
    }   
    if (isset($data['data']['2']['data'])) {
        $text3= $data['data']['2']['data'];
        myfile($text3);
    }
    $myfile = fopen("data.txt", "w");
    fwrite($myfile,$utime);
    fclose($myfile);
    echo "ok";
    //爬虫结束
    }else{
        echo "已爬";
    }
    }else
    echo "老铁 搞事情吗";
    ?>
    

    将以上代码保存为 papapa.php 上传到网站(记得更改监控秘钥),每天访问下这个 http://域名/papapa.php/?p=key 就会自动抓取当天的毒言并保存到 binduyan.txt 但是并不能达到全自动的目的。这时候需要监控平台,阿里云,360 都可以,宝塔面板也可以,还可以自定义时间,如果用宝塔面板使用宝塔更方便。
    监控格式 http://域名/papapa.php/?p=key

    分享个爬的一言 hitokoto

    自用 API
    APi:http://api.mooban.net/dujitang/

    参数
    encode 默认返回文本格式; js 返回为 JS 格式
    charset 默认 UTF-8; GBK 返回 GBk 格式

    举个栗子 http://api.mooban.net/dujitang/?encode=js&charset=utf-8

    参数
    type d (必选)
    encode 默认返回文字; js 返回为 JS 格式
    charset 默认 UTF-8 ; GBK 返回 GBk 格式
    author 默认返回作者; 1 不返回作者

    举个栗子 http://api.mooban.net/dujitang/?type=d&author=1&charset=utf-8

    1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
    2. 分享目的仅供大家学习和交流,请不要用于商业用途!
    3. 如果你也有好源码或者教程,可以到审核区发布,分享有金币奖励和额外收入!
    4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
    5. 如有链接无法下载、失效或广告,请联系管理员处理!
    6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
    7. 如遇到加密压缩包,默认解压密码为"********",如遇到无法解压的请联系管理员!

    模版网 » PHP 自动爬毒汤日历搭建一言 API

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板网
    一个高级程序员模板开发平台

    发表评论

    Hi, 如果你对这款模板有疑问,可以跟我联系哦!

    联系作者

    发表评论

    Hi, 如果你对这款模板有疑问,可以跟我联系哦!

    联系作者