热门标签

, ,

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

什么是毒汤日历 毒汤日历是一本有毒的日历,每天用毒鸡汤来唤醒你。 你甚至不用打开日历,打开 App 的推送,每天会定时送上一杯毒鸡汤。 自己也能制作毒鸡汤?那太好了,毒性够强,如果让别人扎到心你就厉害了。 每条毒汤可以点扎心、发毒评,或者转发给别人,让别人也扎扎心。

准备工作

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

<?phpheader("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//获取句子文件的绝对路径//如果你介意别人可能会拖走这个文本,可以把文件名自定义一下,或者通过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 条怎么能够用呢

<?phpheader("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 默认binduyanif($_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 "已爬";}}elseecho "老铁 搞事情吗";?>

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

添加计划任务 — 访问 url– 设置每天访问

监控格式 http:// 域名 / 文件目录 / papapa.php/?p=key key 自己修改
PHP 代码第七行

未经允许不得转载:作者:知道君, 转载或复制请以 超链接形式 并注明出处 夏末浅笑
原文地址:《PHP 自动爬毒汤日历搭建一言 API 接口》 发布于2018-12-31

分享到:
赞(1)
评论下载是需要人工审核后才能下载的!!!建议QQ授权登录后再评论。

评论 抢沙发

8 + 5 =


下载说明
评论下载是需要人工审核后才能下载的!!!建议QQ授权登录后再评论。
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册