百度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\"\>(.*)\

/Us",$data,$explain);

$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\"\>(.*)

/Us",$data,$synonym);

$content = $synonym[1][0];

$data1 = explode("", $content);

$result = array();

$data2 = array();

foreach ($data1 as $key => $value) {

preg_match_all("/\(?P.*)\&nbsp\;\\\

\(?.*)\/Us", $value, $r_data);

$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\"\>(.*)\

/Us",$data,$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制作百度词典查词采集器相关推荐

  1. 可以保存柯林斯词典查词历史记录的chrome extension

    这个chrome extension 用于记录30个在柯林斯词典点击打开链接查找的单词,并将extension的icon添加到菜单上,单击可以弹出一个列出这些单词的窗口,点击窗口中的单词,可以打开该单 ...

  2. 【易语言】易语言制作-bt天堂ok资源采集器(网络爬虫)

    .版本 2 .支持库 spec.程序集 程序集1.子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行 .局部变量 i, 整数型 .局部变量 源代码, 文本型 .局部变量 详细页地址, ...

  3. quicker + Golden Dict 实现比欧陆词典更好用的免费查词翻译神器

    免费.纯净无广告.界面简洁,Golden Dict 搭配词库文件,就成为桌面端的查词翻译神器. 然而有时候遇到阅读外文文档.源码注释时,Golden Dict 不支持整句翻译,不支持OCR 文字识别, ...

  4. 百度下拉词推广是什么?

    疑问:百度下拉词推广是什么? 一.百度下拉词下拉框推广是什么? 1.了解百度下拉词框 2.关于百度下拉词框推广 二.百度下拉词框特点之处? 三.总结百度下拉词 一.百度下拉词下拉框推广是什么? 1.了 ...

  5. 百度下拉词怎么做?出现负面应该如何处理?此方法适用百度、搜狗、神马

    首先说一下,什么是下拉词? 百度下拉词是百度搜索为了更好地便捷众多网友检索,提升键入高效率而发布的一项服务项目.目前来说包括多家搜索引擎或者平台都有下拉联想推荐词的存在! 推神网( daizuobai ...

  6. 沙拉查词sala dict_配置与bug_独立窗口全局快捷键页面卡住问题/(独立/内嵌)词典窗口/面板大小调整

    文章目录 后台 快捷键 权限 bug:独立窗口全局快捷键页面卡住问题 方案1: 方案2: 词典窗口/面板大小调整 网页内部的查词窗口面板 独立窗口的查词面板 后台 edge://settings/sy ...

  7. 知云文献翻译打不开_沙拉查词:你从未有过的体验,科研文献查词翻译插件

    在长期接触外文文献的过程中,想必各位童鞋也陆续的接触过一系列的翻译软件,诸如谷歌翻译.有道翻译.百度翻译.划词翻译.知云翻译等等,使用体验千差万别,不一而足. (关于知云翻译,早前也有介绍:知云文献翻 ...

  8. 使用星际译王查词(安装字典和声音引擎)

    安装CentOS系统的时候,星际译王就被安装上了(我默认安装的,没有去制定安装包),但星际译王中还没有任何字典,要使用还得把字典安装上,声音引擎属于可选项了,也可以安装上. 可以到这里下载想要的字典, ...

  9. 英语提升利器之沙拉查词,Anki

    学好英语对程序员的重要性不言而喻.而对于已经工作的程序员来说,专门花时间去背英语单词显然性价比不高.在日常工作的场景中,大多数程序员只要能够熟练阅读英文官方文档和技术文章就足够了.在这篇文章中,我将为 ...

最新文章

  1. Scrum敏捷研发管理平台-Leangoo看板
  2. ionic模版引擎及循环
  3. 优秀简历要遵循哪些规则
  4. 人脸识别领域相关金融标准将出台
  5. Imageio: 'ffmpeg-win32-v3.2.4.exe' was not found on your computer; downloading it now.
  6. LeetCode 电子书!
  7. leetcode 316. Remove Duplicate Letters | 316. 去除重复字母(单调栈解法)
  8. ubuntu安装Qt开发环境
  9. (转)VeraCrypt : 怎么加密不被发现?
  10. java实验报告心得_Java实验报告(一)及总结
  11. 同个网络找不到计算机打印机共享,局域网共享打印机搜索不到怎么办 局域网共享打印机搜索不到解决方法...
  12. 图片(img)alt属性标签怎么写
  13. Flask 视图的高级技术
  14. 转载:java 7新特性-TWR(Try-with-resources)
  15. super关键字的用法
  16. 网狐荣耀需要什么服务器系统,网狐荣耀环境搭建教程
  17. Android 高德地图中路线规划绘制界面线路
  18. [CryptoHack] RSA-PRIMES PART1 Write-Up
  19. 艾赛克科技《RFID智能仓库管理系统》
  20. android中根据城市选择学校,如何根据城市发展来选择学校?

热门文章

  1. 物联网赋予了油液监测新升级
  2. WordPress添加侧栏小工具-博客统计(网站统计)
  3. 开发者们的节日,蕴含着成长的秘密 10.24 心语
  4. 2014年计算机初级应用考试是,2015年9月一级计算机基础及MSOffice应用真考试卷及答案(1)...
  5. 在英文操作系统上如何用中文?
  6. VBA之正则表达式(7)-- 乾坤大挪移(数据整理)
  7. 单源最短路径-迪杰斯拉特算法
  8. 标准日本语-初级(上)-基础单元-寒暄语
  9. 使用Spring Web Flow--概念学习
  10. 【AI Top30+案例评选】AI聚变,寻找2018年度最佳人工智能应用案例