资讯专栏INFORMATION COLUMN

PHP 结合前端 ajax 爬取网站信息后, 向指定用户发送指定短信;

ormsf / 3054人阅读

摘要:连接结束后保存信息的文件。将获取的信息以文件流的形式返回,而不是直接输出。当根据重定向时,自动设置中的信息。禁用后将终止从服务端进行验证。指定最多的重定向的数量,这个选项是和一起使用的。

getDocumentID())->html()."
";//$eg1与$eg1->getDocumentID()效果等同 // echo pq("title")->html()."
";//就近匹配 $eg2 // phpQuery::selectDocument($eg1); //默认会使用选定的文档 // $mes=pq("ul")->html();//获取所有的ul标签中的html内容 // $mes=pq("ul,li")->html();//获取所有的ul以及li标签中的html内容 // $t=pq("ul[class="article"]")->html();//获取ul class="article"的html内容 /*** * 根据 手机号, 第几期, 当期号码 发送短信通知 */ function fnSendMessageNotifications($mobile, $lotteryNumber1, $lotteryNumber2) { echo "
****[" . $mobile . "]****
" ; echo "
****[" . $lotteryNumber1 . "]****
" ; echo "
****[" . $lotteryNumber2 . "]****
" ; $host = "http://cowsms.market.alicloudapi.com"; $path = "/intf/smsapi"; $method = "GET"; $appcode = "你的appcode"; $headers = array(); array_push($headers, "Authorization:APPCODE " . $appcode); $querys = "mobile=" . $mobile . "¶s=" . $lotteryNumber1 . "%2C" . $lotteryNumber2 . "&sign=%E6%B6%88%E6%81%AF%E9%80%9A&tpid=155"; echo "
****[" . $querys . "]****
" ; $bodys = ""; $url = $host . $path . "?" . $querys; $curl = curl_init(); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_FAILONERROR, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HEADER, true); if (1 == strpos("$".$host, "https://")) { curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); } var_dump(curl_exec($curl)); } /** * 添加 USERAGENT , 模拟真实浏览器访问 * */ function get_fcontent($url, $timeout = 5 ) { $url = str_replace( "&", "&", urldecode(trim($url)) ); $cookie = tempnam ("/tmp", "CURLCOOKIE"); $ch = curl_init(); curl_setopt( $ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" ); curl_setopt( $ch, CURLOPT_URL, $url);//需要获取的URL地址,也可以在 curl_init()函数中设置。 curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookie );//连接结束后保存cookie信息的文件。 curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );//启用时会将服务器服务器返回的"Location: "放在header中递归的返回给服务器,使用CURLOPT_MAXREDIRS可以限定递归返回的数量。 curl_setopt( $ch, CURLOPT_ENCODING, "" );//HTTP请求头中"Accept-Encoding: "的值。支持的编码有"identity","deflate"和"gzip"。如果为空字符串"",请求头会发送所有支持的编码类型。在cURL 7.10中被加入。 curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );//将 curl_exec()获取的信息以文件流的形式返回,而不是直接输出。 curl_setopt( $ch, CURLOPT_AUTOREFERER, true );//当根据Location:重定向时,自动设置header中的Referer:信息。 //禁用后cURL将终止从服务端进行验证。使用CURLOPT_CAINFO选项设置证书使用CURLOPT_CAPATH选项设置证书目录 如果CURLOPT_SSL_VERIFYPEER(默认值为2)被启用,CURLOPT_SSL_VERIFYHOST需要被设置成TRUE否则设置为FALSE。自cURL 7.10开始默认为TRUE。从cURL 7.10开始默认绑定安装。 curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); // # required for https urls, 在发起连接前等待的时间,如果设置为0,则无限等待。 curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout ); curl_setopt( $ch, CURLOPT_TIMEOUT, $timeout ); // 设置cURL允许执行的最长秒数。 curl_setopt( $ch, CURLOPT_MAXREDIRS, 10 ); //指定最多的HTTP重定向的数量,这个选项是和CURLOPT_FOLLOWLOCATION一起使用的。 $content = curl_exec( $ch ); curl_close ( $ch ); return $content; } // set_time_limit(0); // Maximum execution time , 设置成0的话,就是永不过期。 $lastQi = ""; // foreach保存的最后一个 期号 $lastNumber = ""; // foreach保存的最后一个 号码 $nTheLastTraversalPeriod = ""; // 缓存上一个foreach的首尾相同的期号, 用以比对是否为最新一期, 也用来当做最后一个符合条件的期号 $nTheLastTraversalNumber = ""; $sessionStorage_cacheQi = ""; // 缓存上一个发送了短信的期号 /** * 获得最新一期期号, 获得最新一期号码 * */ function fnGetTheLatestPhase(){ //详细每个curlopt意思.转http://www.jb51.net/article/39331.htm global $lastQi; global $lastNumber; global $nTheLastTraversalPeriod; global $nTheLastTraversalNumber; global $sessionStorage_cacheQi; $url = "http://caipiao.163.com/award/cqssc/"; $content = get_fcontent($url); phpQuery::newDocumentHTML($content); // $main = pq("title")->html(); // $table = pq(".award-winNum")->html(); $table_tr = pq("tr"); $nCurrentTerm = ""; foreach( pq(".award-winNum") as $table_tr ) { $nCurrentTerm = pq($table_tr) -> prev()-> html(); // 当前的期号 $nCurrentNumber = pq($table_tr) -> html();// 当前号码 if($nCurrentNumber[0] === $nCurrentNumber[strlen($nCurrentNumber)-1] && intval($nTheLastTraversalPeriod)****[" . $nTheLastTraversalPeriod . "]****
" ; } if($nCurrentTerm === "001" && !is_numeric(preg_replace("/ /", "", $nCurrentNumber))){ // 假设重新开始, 每天新一期, 旧的还在缓存, 如何办? // 假设当前的期号为001, 表示的时时彩从头开始, 此时需要: // - 删除缓存的上一个发送短信的期号 // - 删除缓存的上一个首尾相同的期号 $nTheLastTraversalPeriod = ""; $sessionStorage_cacheQi = ""; } // // echo pq($table_tr); // $text = pq($table_tr) -> html();// 号码 // $_lastQi = pq($table_tr) -> prev()-> html(); // 当前元素的上一个元素 // echo "
****[" . $nTheLastTraversalPeriod . "]****
" ; // if($text[0] === $text[strlen($text)-1] && intval($sessionStorage_cacheQi||"")"; } echo "
"; if($nTheLastTraversalPeriod !== $sessionStorage_cacheQi){ // 假设没有值得发送的期号, 假设当前发送的期号与之前发送的期号不同(不能相同), 则不执行相关代码(发送短信) $sessionStorage_cacheQi = $nTheLastTraversalPeriod; $object = (object) [ "nPeriodNumber" => $nTheLastTraversalPeriod, "nNumber" => preg_replace("/ /", "", $nTheLastTraversalNumber), ]; return $object; }else{ $object = (object) [ "nPeriodNumber" => "", "nNumber" => "", ]; return $object; } } // var_dump(fnGetTheLatestPhase()); // $options = fnGetTheLatestPhase(); // fnSendMessageNotifications("185********", $options->nPeriodNumber, $options->nNumber); while (1) { $options = fnGetTheLatestPhase(); // 两者必须同时使用来刷新输出缓冲 ob_flush(); //将数据从php的buffer中释放出来 flush(); //将释放出来的数据发送给浏览器, 要是没有 flush 和 ob_flush , 浏览器就会陷入一种假卡死的状态 var_dump($options); if($options->nPeriodNumber){ fnSendMessageNotifications("185****", $options->nPeriodNumber, $options->nNumber); } sleep(5); }

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/96335.html

相关文章

  • PHP 结合前端 ajax 爬取网站信息, 指定用户发送指定短信;

    摘要:连接结束后保存信息的文件。将获取的信息以文件流的形式返回,而不是直接输出。当根据重定向时,自动设置中的信息。禁用后将终止从服务端进行验证。指定最多的重定向的数量,这个选项是和一起使用的。

    longshengwang 评论0 收藏0
  • nodeJS实现基于Promise爬虫 定时发送信息指定邮件

    摘要:也就是说,我的篇文章的请求对应个实例,这些实例都请求完毕后,执行以下逻辑他的目的在于对每一个返回值这个返回值为单篇文章的内容,进行方法处理。 英国人Robert Pitt曾在Github上公布了他的爬虫脚本,导致任何人都可以容易地取得Google Plus的大量公开用户的ID信息。至今大概有2亿2千5百万用户ID遭曝光。 亮点在于,这是个nodejs脚本,非常短,包括注释只有71行。 ...

    xuweijian 评论0 收藏0
  • JavaScript 进阶知识 - Ajax

    摘要:注意事项以下版本要设置默认编码,,否则程序可能无法正确显示中文。组成部分协议是对请求和响应的报文内容进行了约束和规范。请求报文请求是由客户端发起,其规范格式为请求行请求头请求主体。 showImg(https://segmentfault.com/img/remote/1460000013696283?w=1920&h=1080); Ajax 前言 前面我们已经学习了js基础知识和一些...

    Dongjie_Liu 评论0 收藏0
  • JavaScript 进阶知识 - Ajax

    摘要:注意事项以下版本要设置默认编码,,否则程序可能无法正确显示中文。组成部分协议是对请求和响应的报文内容进行了约束和规范。请求报文请求是由客户端发起,其规范格式为请求行请求头请求主体。 showImg(https://segmentfault.com/img/remote/1460000013696283?w=1920&h=1080); Ajax 前言 前面我们已经学习了js基础知识和一些...

    adie 评论0 收藏0

发表评论

0条评论

ormsf

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<