php全词查询,PHP制作百度词典查词采集器
百度dict 采集样本
写的采集百度dict词典翻译后的所有结果数据,当然附带了13.5w单词库和采集简单的案例,这里我把写出的主要类dict.class.php放出来,项目地址http://github.com/widuu/baidu_dict,有需要的直接fork就可以了~么么哒,这东西用的人很少,所以有用的兄弟拿走了哈~
/**
* dict.class.php 采集百度词典翻译内容
*
* @copyright (C) 2014 widuu
* @license http://www.widuu.com
* @lastmodify 2014-2-15
*/
header("content-type:text/html;charset=utf8");
class Dict{
private $word;
//显示的条数
private static $num = 10;
public function __construct(){}
/**
* 公用返回百度采集数据的方法
* @param string 英文单词
* retun array(
*symbol" => 音标
*"pro" => 发音
*"example"=> 例句
*"explain"=> 简明释义
*"synonym"=> 同反义词
*"phrase" => 短语数组
*)
*
*/
public function content($word){
$this -> word = $word;
$symbol = $this -> Pronounced();
$pro = $this->getSay();
$example = $this -> getExample();
$explain = $this -> getExplain();
$synonym = $this -> getSynonym();
$phrase = $this -> getPhrase();
$result = array(
"symbol" => $symbol,//音标
"pro" => $pro,//发音
"example"=> $example,//例句
"explain"=> $explain,//简明释义
"synonym"=> $synonym,//同反义词
"phrase" => $phrase //短语数组
);
return $result;
}
/**
* 远程获取百度翻译内容
* get function curl
* retun string
*
*/
private function getContent(){
$useragent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0";
$ch = curl_init();
$url = "http://dict.baidu.com/s?wd=".$this->word;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT,$useragent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HTTPGET, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER,1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$result = curl_exec($ch);
if (curl_errno($curl)) {
echo 'Errno'.curl_error($curl);
}
curl_close($ch);
return $result;
}
/**
* 获取百度翻译发音
* retun array(英,美)
*
*/
private function Pronounced(){
$data = $this -> getContent();
preg_match_all("/\"EN\-US\"\>(.*)\/Ui",$data,$pronounced);
return array(
'en' => $pronounced[1][0],
'us' => $pronounced[1][1]
);
}
/**
* 获取百度翻译发音
* return array(英,美)
*
*/
private function getSay(){
$data = $this -> getContent();
preg_match_all("/url=\"(.*)\"/Ui",$data,$pronounced);
return array(
'en' => $pronounced[1][0],
'us' => $pronounced[1][1]
);
}
/**
* 获取百度翻译例句
* return array() 多维数组 例句
*
*/
private function getExample(){
$str = "";
$data = $this -> getContent();
preg_match_all("/var example_data = (.*)\]\;/Us",$data,$example);
$data1 = "[[[".ltrim($example[1][0],"[");
$data2 = explode("[[[",$data1);
$num = count(array_filter($data2));
foreach($data2 as $key => $value){
$data3 = explode("[[","[[".$value);
foreach ($data3 as $k => $v) {
preg_match_all("/\[\"(.*)\",/Us","[".$v, $match);
if(!empty($match[1])){
$str .= implode($match[1]," ")."@";
}
}
}
$data4 = trim($str,"@");
$data5 = explode("@", $data4);
$result = array_chunk($data5, 2);
return $result;
}
/**
* 获取简明释义
* return array (x => "词性",b => "附属")
*
**/
private function getExplain(){
$data = $this -> getContent();
preg_match_all("/id\=\"en\-simple\-means\"\>(.*)\
$r_data = $explain[1][0];
preg_match_all("/\
\(?P.*)\\(?P.*)\\/Us", $r_data, $a_data);
preg_match_all("/\(?P[^\>]+)\:\(?P.*)\\/Us", $r_data, $b_data);
$result = array();
foreach ($a_data["adj"] as $key => $value) {
$result[$value] = $a_data["name"][$key];
}
$word_b = array();
foreach ($b_data["tag"] as $key => $value) {
$word_b[$value] = strip_tags($b_data["word"][$key]);
}
$result_data = array("x" => $result,"b" => $word_b);
return $result_data;
}
/**
* 获取同义词
* return array(0 => "同义词", 1 => "反义词") 一般为多维数组
*
*/
private function getSynonym(){
$data = $this -> getContent();
preg_match_all("/id=\"en\-syn\-ant\"\>(.*)
$content = $synonym[1][0];
$data1 = explode("", $content);
$result = array();
$data2 = array();
foreach ($data1 as $key => $value) {
preg_match_all("/\(?P.*)\ \;\\\
$data2[$key]["adj"] = $r_data["adj"];
$data2[$key]["content"] = $r_data["content"];
}
foreach ($data2 as $key => $value) {
foreach ($value["content"] as $k => $v) {
if(!empty($v)){
preg_match_all("/\
\
(?P
.*)\(?P.*)\/Us", $v, $v_data);
foreach ($v_data['title'] as $m => $d) {
$data = strip_tags(preg_replace("<>"," ", $v_data["value"][$m]));
$result[$key][$value["adj"][$k]][$d] = $data;
}
}
}
}
return $result;
}
/**
* 获取短语词组
* return array (key => value) 一维或者多维数组
*
*/
private function getPhrase(){
$num = self::$num;
$data = $this -> getContent();
preg_match_all("/id=\"en\-phrase\"\>(.*)\
$data = explode("",$phrase[1][0]);
$data1 = array_slice($data,0,$num);
$result = array();
foreach ($data1 as $key => $value) {
$data2 = explode("
", $value);
$n = count($data2);
if($n<=3){
$result[str_replace(" ","",strip_tags($data2[0]))] = strip_tags($data2[1]);
}else{
$data3 = array_slice($data2,0,$n-1);
$data4 = array_slice($data2,0,2);
$res = array_diff($data3,$data4);
$data5 = array_chunk($res,2);
$key_value = trim(str_replace(" ","",strip_tags($data4[0])));
$result[$key_value] = strip_tags($data4[1]);
foreach ($data5 as $key => $value) {
foreach ($value as $k => $v) {
$value[$k] = strip_tags($v);
}
$array = array($result[$key_value],$value);
if (array_key_exists($key_value, $result)){
$result[$key_value] = $array;
}
}
}
}
return $result;
}
/**
* 将数组转换为字符串
*
* @param array $data 数组
* @param bool $isformdata 如果为0,则不使用new_stripslashes处理,可选参数,默认为1
* @return string 返回字符串,如果,data为空,则返回空
*/
private function array2string($data, $isformdata = 1) {
if($data == '') return '';
if($isformdata) $data = $this->new_stripslashes($data);
return addslashes(var_export($data, TRUE));
}
/**
* 返回经stripslashes处理过的字符串或数组
* @param $string 需要处理的字符串或数组
* @return mixed
*/
private function new_stripslashes($string) {
if(!is_array($string)) return stripslashes($string);
foreach($string as $key => $val) $string[$key] = $this->new_stripslashes($val);
return $string;
}
}
// $word = new dict("express");
// $word ->content();
以上就是本文的全部内容了,非常实用的功能,希望小伙伴们能够喜欢。
php全词查询,PHP制作百度词典查词采集器相关推荐
- 可以保存柯林斯词典查词历史记录的chrome extension
这个chrome extension 用于记录30个在柯林斯词典点击打开链接查找的单词,并将extension的icon添加到菜单上,单击可以弹出一个列出这些单词的窗口,点击窗口中的单词,可以打开该单 ...
- 【易语言】易语言制作-bt天堂ok资源采集器(网络爬虫)
.版本 2 .支持库 spec.程序集 程序集1.子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行 .局部变量 i, 整数型 .局部变量 源代码, 文本型 .局部变量 详细页地址, ...
- quicker + Golden Dict 实现比欧陆词典更好用的免费查词翻译神器
免费.纯净无广告.界面简洁,Golden Dict 搭配词库文件,就成为桌面端的查词翻译神器. 然而有时候遇到阅读外文文档.源码注释时,Golden Dict 不支持整句翻译,不支持OCR 文字识别, ...
- 百度下拉词推广是什么?
疑问:百度下拉词推广是什么? 一.百度下拉词下拉框推广是什么? 1.了解百度下拉词框 2.关于百度下拉词框推广 二.百度下拉词框特点之处? 三.总结百度下拉词 一.百度下拉词下拉框推广是什么? 1.了 ...
- 百度下拉词怎么做?出现负面应该如何处理?此方法适用百度、搜狗、神马
首先说一下,什么是下拉词? 百度下拉词是百度搜索为了更好地便捷众多网友检索,提升键入高效率而发布的一项服务项目.目前来说包括多家搜索引擎或者平台都有下拉联想推荐词的存在! 推神网( daizuobai ...
- 沙拉查词sala dict_配置与bug_独立窗口全局快捷键页面卡住问题/(独立/内嵌)词典窗口/面板大小调整
文章目录 后台 快捷键 权限 bug:独立窗口全局快捷键页面卡住问题 方案1: 方案2: 词典窗口/面板大小调整 网页内部的查词窗口面板 独立窗口的查词面板 后台 edge://settings/sy ...
- 知云文献翻译打不开_沙拉查词:你从未有过的体验,科研文献查词翻译插件
在长期接触外文文献的过程中,想必各位童鞋也陆续的接触过一系列的翻译软件,诸如谷歌翻译.有道翻译.百度翻译.划词翻译.知云翻译等等,使用体验千差万别,不一而足. (关于知云翻译,早前也有介绍:知云文献翻 ...
- 使用星际译王查词(安装字典和声音引擎)
安装CentOS系统的时候,星际译王就被安装上了(我默认安装的,没有去制定安装包),但星际译王中还没有任何字典,要使用还得把字典安装上,声音引擎属于可选项了,也可以安装上. 可以到这里下载想要的字典, ...
- 英语提升利器之沙拉查词,Anki
学好英语对程序员的重要性不言而喻.而对于已经工作的程序员来说,专门花时间去背英语单词显然性价比不高.在日常工作的场景中,大多数程序员只要能够熟练阅读英文官方文档和技术文章就足够了.在这篇文章中,我将为 ...
最新文章
- Scrum敏捷研发管理平台-Leangoo看板
- ionic模版引擎及循环
- 优秀简历要遵循哪些规则
- 人脸识别领域相关金融标准将出台
- Imageio: 'ffmpeg-win32-v3.2.4.exe' was not found on your computer; downloading it now.
- LeetCode 电子书!
- leetcode 316. Remove Duplicate Letters | 316. 去除重复字母(单调栈解法)
- ubuntu安装Qt开发环境
- (转)VeraCrypt : 怎么加密不被发现?
- java实验报告心得_Java实验报告(一)及总结
- 同个网络找不到计算机打印机共享,局域网共享打印机搜索不到怎么办 局域网共享打印机搜索不到解决方法...
- 图片(img)alt属性标签怎么写
- Flask 视图的高级技术
- 转载:java 7新特性-TWR(Try-with-resources)
- super关键字的用法
- 网狐荣耀需要什么服务器系统,网狐荣耀环境搭建教程
- Android 高德地图中路线规划绘制界面线路
- [CryptoHack] RSA-PRIMES PART1 Write-Up
- 艾赛克科技《RFID智能仓库管理系统》
- android中根据城市选择学校,如何根据城市发展来选择学校?
热门文章
- 物联网赋予了油液监测新升级
- WordPress添加侧栏小工具-博客统计(网站统计)
- 开发者们的节日,蕴含着成长的秘密 10.24 心语
- 2014年计算机初级应用考试是,2015年9月一级计算机基础及MSOffice应用真考试卷及答案(1)...
- 在英文操作系统上如何用中文?
- VBA之正则表达式(7)-- 乾坤大挪移(数据整理)
- 单源最短路径-迪杰斯拉特算法
- 标准日本语-初级(上)-基础单元-寒暄语
- 使用Spring Web Flow--概念学习
- 【AI Top30+案例评选】AI聚变,寻找2018年度最佳人工智能应用案例