专栏首页黑白安全搭建采集金山词霸每日一句接口

搭建采集金山词霸每日一句接口

Api官方接口

每日:http://open.iciba.com/dsapi/

查指定时间:http://sentence.iciba.com/index.php?c=dailysentence&m=getdetail&title=2018-11-06&_=1541655200812

搭建采集接口

<?php 
header("Content-type: text/html; charset=utf-8"); //设置编码 utf-8 
$t1 = microtime(true);
$utime = date("Y-m-d");//api的尾缀时间
$translation = '0';//翻译语句,0不采集,1采集
$content = '1';//英语版,0不采集,1采集
//使用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("iciba.txt", "a+");//创建文件保存抓取的句子
//循环次数 2018-7-31 至现在日期相差的天数 
for ($i=1; $i<100; $i++) { 
    $json_string =httpGet('http://sentence.iciba.com/index.php?c=dailysentence&m=getdetail&title='.$utime.'&_='.time());//curl 自定义函数访问api
 
    $data= json_decode($json_string,true);//解析json 转为php
    if (isset($data['note'])) {
    	$text1= $data['note']."\n"; 
    	fwrite($myfile, $text1);
    }
 
    if (isset($data['translation'])&&$translation==1) {
    	$text2= str_replace('小编的话:', '', $data['translation'])."\n";
    	fwrite($myfile, $text2);
    }
    if (isset($data['content'])&&$content==1) {
    	$text3= $data['content']."\n"; 
    	fwrite($myfile, $text3);
    }
    $utime= date("Y-m-d",strtotime("-".strval($i)." day")); //每循环一次 当前日期减去循环变量
} 
fclose($myfile);
$t2 = microtime(true);
echo 'ok,耗时'.round($t2-$t1,3).'秒';
 
?>

运行这个接口能采集到之前100天的。

一言接口

<?php
//获取句子文件的绝对路径
//如果你介意别人可能会拖走这个文本,可以把文件名自定义一下,或者通过Nginx禁止拉取也行。
$path = dirname(__FILE__);
$file = file($path."/iciba.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 (isset($_GET['encode'])&&$_GET['encode'] === 'js') {
	header('Content-type: text/javascript;charset=utf-8'); 
    echo "function iciba(){document.write('" . $content ."');}";
} else {
    echo $content;
}

每日采集接口

<?php
header("Content-type: text/html; charset=utf-8"); //设置编码 utf-8 
$utime = date("Y-m-d");
$file_data = 'data.txt';
if(!file_exists($file_data)){
    fopen($file_data, "w");
}
$str = file_get_contents('data.txt');
$d=date('Y/m/d H:i',strtotime($str));
 
$translation = '0';//翻译语句,0不采集,1采集
$content = '1';//英语版,0不采集,1采集
//请更改监控key 默认iciba
if($_GET['p']==='iciba'){
//判断今天是否已爬
    if(strtotime($utime)>strtotime($d)){
//爬虫开始    
//使用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("iciba.txt", "a+");
    fwrite($myfile,$txt);
    fclose($myfile);
}
 
$json_string =httpGet('http://open.iciba.com/dsapi/');//curl 自定义函数访问api
$data= json_decode($json_string,true);//解析json 转为php
//2018-4-11之前只有一条数据 so 加判断 
if (isset($data['note'])) {
    $text1= $data['note']."\n"; 
    myfile($text1);
}
 
if (isset($data['translation'])&&$translation==1) {
    $text2= str_replace('小编的话:', '', $data['translation'])."\n";
    myfile($text2);
}
if (isset($data['content'])&&$content==1) {
    $text3= $data['content']."\n"; 
    myfile($text3);
}
$myfile = fopen("data.txt", "w");
fwrite($myfile,$utime);
fclose($myfile);
echo "ok";
//爬虫结束
}else{
    echo "已爬";
}
}else
echo "老铁 搞事情吗";
?>

之后可以把这个每日采集接口使用宝塔计划监控为每日采集即可。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 韩国最大加密货币交易所Upbit遭检方突击检查

    韩国最大的加密货币交易所Upbit日前遭到了韩国检方的突击检查。Upbit上周五在其网站发布的公告证实了上述调查消息。Upbit表示,正“全力配合”有关部门的调...

    周俊辉
  • 当黑客拥有一台算力无限的主机,会做出哪些骚操作?

    所以对于黑客而言,一台算力无限的主机应该只会影响到一个领域,那就是密码学。因为整个现代密码学的安全基础,就建立在各种计算困难问题和关于计算复杂度的假设上。

    周俊辉
  • PHP 自动爬毒汤日历搭建一言 API接口

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

    周俊辉
  • PHP网络技术(三)——CURL实现跨服务取接口功能

    PHP网络技术(三)——CURL实现跨服务取接口功能 (原创内容,转载请注明来源,谢谢) PHP的curl类库,可以实现远程访问、页面抓取、表...

    用户1327360
  • Linux_服务器_01_查看公网IP

    shirayner
  • 如何在 CentOS 8 上安装和使用 Curl

    curl是一个强大的命令行工具,主要用于本地和远程服务器之间传送数据。使用curl你可以使用各种协议下载或者上传数据,例如: HTTP, HTTPS, SCP,...

    雪梦科技
  • PHP使用CURL模拟POST和GET请求

    在PHP中想要构造类似GET和POST请求,在一些APP或者等后端功能开发中是有这种需求。 在PHP语言当中有file_get_content ()函数和cur...

    WZR
  • Linux常用命令08 - curl

    curl 是一个命令行实用程序,用于将数据从服务器或传输到服务器,该服务器设计用于在没有用户交互的情况下工作。 使用 curl,您可以使用支持的协议(包括 HT...

    叉叉敌
  • PHP使用curl取HTTP状态码

    V站CEO-西顾
  • PHP使用curl取HTTP状态码

    墨渊

扫码关注云+社区

领取腾讯云代金券