MENU

一键自动爬毒汤日历所有一句话数据

• February 16, 2020 • Read: 3501 • 网站源码

前言:

之前写过了一篇文章就是爬取毒汤日历的数据做一言的:https://blog.oioweb.cn/index.php/archives/400.html,后来服务器有时候会更换,还要重新监控挺烦人的而且之前的数据还不能采集到,我想干脆一下子采集完多省事,教书先生API站:https://api.oioweb.cn,上代码吧!

两个文件 一个是PHP 一个是html

php:里面有我封装的db类和Redis类,我也不想改了,看代码就能看明白,不懂评论区问我。

<?php
$json = json_decode(httpGet("http://www.dutangapp.cn/u/toxic?date=".$_GET['time']));
if ($json->data){
    foreach ($json->data as $v){
        if (!$redis->cha($v->data)){
            $DB->query("INSERT INTO `six_dg`.`dutang`(`txt`) VALUES ('".$v->data."')");
            $redis->add($v->data,$v->data,60*60*24*800);
        }
    }
}
echo '{"code":"1"}';
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;
}

html:运行这个文件 需要在php环境下运行

<!doctype html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="//ku.oioweb.cn/jQuery/3.4.1/jquery.min.js"></script>
</head>
<body>
<script>
    $(function () {
        for (i=1;i<999999;i++){
            var timr = timeadd(i);
            $.ajax({
                url:"1.php?time="+timr,
                type:"GET",
                dataType:"JSON",
                async:false,
                success:function (data) {
                    console.log("入库数据日期:"+timr);
                }
            })
        }
    });
function timeadd(t) {
    var dateTime=new Date("2019-01-01");
    dateTime=dateTime . setDate(dateTime.getDate()+t);
    dateTime=new Date(dateTime);
    var a = dateTime . toLocaleDateString();
    while(a.indexOf('/') >= 0){
        a = a.replace('/','-');
    }
    return a;
}
</script>
</body>
</html>

实现方法:

先说PHP文件吧,把请求到的json解析以后使用foreach进行循环遍历,得到了data也就是我们要的那条数据以后,查询一下Redis里面有没有这条数据,防止重复添加进数据库,如果Redis没有这条数据就开始执行写库,然后把写进去的数据写进Redis里面,PHP的任务就算是完成了。

html:写了一个年月日加指定天数的方法,其他的没啥了,就使用for一直循环PHP接口就实现了全自动写数据,毒汤的数据是从2019-01-01开始的,我们也从2019-1-1开始,这样就没得问题了。还有不懂得话评论群留言就行了,或者加站长交流群:165107560(都是基佬)

一键自动爬毒汤日历所有一句话数据
一键自动爬毒汤日历所有一句话数据

Archives QR Code Tip
QR Code for this page
Tipping QR Code
Leave a Comment

已有 1 条评论
  1. 建议把curl 超时3秒改为30秒

    另外在判断Redis里面有没有这条新数据的时候加一个 $v->data !=="" 因为会有空白的数据