PHP 调用金山词霸API获取音标和音频
说明文档地址:http://open.iciba.com/?c=wiki&t=cc
先用php封一个curl爬取页面的方法:
/** @param string $url get请求地址* @param int $httpCode 返回状态码* @return mixed*/
function curl_get($url, $httpCode = 0) {
// 初始化$ch = curl_init();
// 爬取url地址curl_setopt($ch, CURLOPT_URL, $url);
// 不将爬取内容直接输出而保存到变量中curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//部署在Linux环境下改为true
// 模拟一个浏览器访问https网站curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// 设定连接时间curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);//执行获取内容$file_contents = curl_exec($ch);$httpCode = curl_getinfo($ch,CURLINFO_HTTP_CODE);curl_close($ch);return $file_contents;
}
在封一个可以通过音频连接将音频读取并保存到本地的方法
function save_music($type,$file_url)
{$file_name = $type."/".uniqid().".mp3";
// $pic_url = "http://res.iciba.com/resource/amp3/1/0/34/d1/34d1f91fb2e514b8576fab1a75a89a6b.mp3";$file_read_fd = fopen($file_url, "r");$file_write_fd = fopen($file_name, "w");$file_content = "";while(!feof($file_read_fd)){$file_content .= fread($file_read_fd, 1048576);}fwrite($file_write_fd, $file_content);fclose($file_read_fd);fclose($file_write_fd);return $file_name;
}
然后先调用接口获取信息,通过正则拿出详细信息,存入数据库和保存本地服务器:
//收集音标set_time_limit(0);$mysql = new db();$result = $mysql->sql_select('SELECT * FROM dictionary WHERE id > 7703');foreach ($result as $a => $b){$url = sprintf("http://dict-co.iciba.com/api/dictionary.php?w=%s&key=your_key",$b['word']);//爬取结果$result = curl_get($url);//从结果提取音标和音频的连接保存数组$rr = preg_match('/[a-zA-Z]+\s.*\s.*\s.*\s\<ps\>(.*)\s\<pron\>(.*)\s\<ps\>(.*)\s\<pron\>(.*)\s/',$result,$results);//预处理去掉标签和空格$en_symbol=preg_replace("/[\r\n\s]/","",strip_tags($results[1]));$en_symbol=preg_replace("/[']/","ˈ",$en_symbol);if ($en_symbol == "" || !$rr) continue;$en_symbol_mp3=preg_replace("/[\r\n\s]/","",strip_tags($results[2]));//保存音频$url1 = save_music($b['type'],$en_symbol_mp3);$us_symbol=preg_replace("/[\r\n\s]/","",strip_tags($results[3]));$us_symbol=preg_replace("/[']/","ˈ",$us_symbol);$us_symbol_mp3=preg_replace("/[\r\n\s]/","",strip_tags($results[4]));$url2 = save_music($b['type'],$us_symbol_mp3);//调用自己封装的方法更新数据库$mysql->update('dictionary',['phonetic_symbol_en' => $en_symbol,'phonetic_symbol_us' => $us_symbol,'pronunciation_en' => $url1,'pronunciation_us' => $url2,],['id' => $b['id']]);
}
以上就是全流程
PHP 调用金山词霸API获取音标和音频相关推荐
- 前端js调用后端API获取数据的三种方法(2022.7.25)
前端js调用后台API获取数据的三种方法(2022.7.25) 前言 需求分析 一个Get实例 浏览器请求 SoapUI软件请求 一个Post实例 浏览器请求 SoapUI软件请求 1.Http简介( ...
- JavaScript调用原生API获取手机型号
跨平台技术简介 针对原生开发面临问题,人们一直都在努力寻找好的解决方案,而时至今日,已经有很多跨平台框架,根据其原理,主要分为三类: H5+原生(Cordova.Ionic.微信小程序) JavaSc ...
- 进阶1·调用高德API获取交通数据(多个URL访问,字典提取,while无限循环下的程序间断运行)
调用高德开放API获取实时交通数据 想法及思路 现在大型网站都提供了好多开放API,根据这些开放API可以做一些比较有趣的东西,本次调用高德开放api实时获取你想知道的道路拥堵状况 工具及技术: Py ...
- js调用高德API获取所在当前城市
可以在js代码中直接调用API接口,获取所处当前城市信息,代码如下: <script type="text/javascript">function getCurren ...
- vue 地理位置定位_Vue 通过调用百度API获取地理位置-经度纬度省份城市
一.首先在百度api注册获得ak密钥 二.新建js文件,我命名为loadBMap.js,里面创建script,代码如下: /** * 加载地图 * @param {Function} callback ...
- Python调用微博API获取微博内容
一:获取app-key 和 app-secret 使用自己的微博账号登录微博开放平台(http://open.weibo.com/),在微博开放中心下"创建应用"创建一个应用,应用 ...
- 调用ins api获取个人照片信息
最近想要把ins获取到的个人照片信息放到博客中去,没想到ins的api还有一点坑,记录一下. 注册client 为了获取个人信息,我们首先就是要获取token,获取token之前,需要先注册一个cli ...
- 调用雅虎API获取全球天气
雅虎官方API文档: https://developer.yahoo.com/weather/documentation.html 雅虎获取授权key网址(免费获取): https://develop ...
- Android 调用原生API获取地理位置和经纬度,判断所在国家
public static boolean isCN(Context context) {TelephonyManager tm = (TelephonyManager) context.getSys ...
- python调用zabbixapi接口_python调用zabbix api获取主机信息
import requests import json headers = { 'Content-Type': 'application/json' } class GetZabbix: def __ ...
最新文章
- leetcode算法题--叶值的最小代价生成树
- OAuth 2 开发人员指南
- (原创)Android6.0亮屏流程之Keyguard Window绘制
- 学习笔记-------两阶段提交 2PC
- Android使用软引用和弱引用
- java两个数最大公约数和最小公倍数_java中请给出例子程序:找出两个数的最大公约数和最小公倍数...
- 【三维路径规划】基于matlab改进粒子滤波无人机三维路径规划【含Matlab源码 1269期】
- 一阶惯性环节的性能分析——自动控制原理基础补充(二)
- 数据结构——八大排序算法(面试必备)
- JS基础知识大总结史上最全(已完结~)
- python if .for 等函数
- 彻底了解Cookie
- python对excel中需要的数据的单元格填充颜色
- tp服务器有什么作用,tp路由器虚拟服务器能干嘛
- 汉字对应的unicode编码
- Vue 表情输入组件,微信face表情组件
- 记一次徐宗本院士的讲座——大数据分析技术图谱与研究举例
- Win7-64 重装 Anaconda3
- mipi摄像头linux,VS-RK3399 在linux系统下面调试Mipi camera接口介绍
- c log 指定服务器,解决 SQL2000安装程序配置服务器失败。参考服务器错误日志和C:\WINDOWS\sqlstp.log方法...