I CAN'T GIVE YOU THE WORLD, BUT I CAN GIVE YOU MY WORLD.

火车头采集谷歌翻译PHP插件

插件特点

  • 免费 基于Google在线翻译实现,使用完全免费。
  • 简单 插件只有一个1K大小的php文件,下载后放到火车头网站采集软件里即可。
  • 方便 所有的设置都在火车头网站数据抓取软件的采集规则里设置即可,不需要修改插件代码。
  • 灵活 不受软件版本和操作系统版本的限制,只要支持php插件的火车头采集工具即可使用。

使用方法

  • 1.修改火车头的PHP环境
    由于火车头软件内置的PHP环境有问题,在使用php插件之前需要先修改火车头的PHP环境。修改的方法很简单,打开火车头采集器的安装目录“System/PHP”,找到php.ini文件打开,并找到如下代码。
    ;extension=php_curl.dll
    将最前面的分号“;”删除并保存即可,这样火车头数据采集器就可以正常运行这个PHP插件了。
  • 2.将插件文件放到火车头的安装目录
    将下载的插件解压后,把“GoogleTranslate.php”文件放到火车头安装目录的插件文件夹。(V9版的是Plugins文件夹,7.6版的是Plugins/LocoySpider文件夹)
  • 3.设置翻译方向和翻译标签
    3.1.在火车头的采集规则里新建一个标签名叫“翻译方向”的标签,数据获取方式选择“生成固定格式的数据”,内容按“源语言标识>翻译目标语言标识”这样的规则填写。例如我采集的是中文,需要翻译成英文,则填“zh-CN>en”(中间的符号“>”是英文半角输入下的尖括号,符号错了的话无法翻译),如下图:
    《火车头采集谷歌翻译PHP插件》
    各国语言标识见本文下面的“语言标识”部分。
    3.2.新建一个标签名叫“翻译标签”的标签用来设置需要翻译的标签和保存翻译后内容的标签,数据获取方式选择“生成固定格式的数据”,规则为“采集的标签名>保存翻译后内容的标签名”(同样中间的符号“>”是英文半角输入下的尖括号,符号错了的话无法翻译),多个翻译标签之间用英文半角的逗号“,”隔开,如果不需要保存采集的内容则前后都写采集标签名即可。如下图:
    《火车头采集谷歌翻译PHP插件》
    我上图中填写了4个翻译规则,火车头采集软件运行后,数据保存规则如下:

    • 采集的标题不会保存中文内容,只会保存翻译后的英文内容。
    • 内容、作者、出处三个都即会保存采集的中文内容,同时会保存翻译后的英文内容。
  • 4.创建翻译内容标签
    根据“翻译标签”里的规则,新建相应的标签名用来保存翻译后的内容,规则留空即可。例如我上面图中的规则里设置了内容、作者、出处三个标签,翻译后的内容都是存储在“翻译的XX”标签里的,那我的采集规则里需要对应的创建这三个标签名,然后这三个标签的采集规则留空,如下图:
    《火车头采集谷歌翻译PHP插件》
    上图中三个红框中的标签是用来保存翻译后的内容的,标签名必须和“翻译标签”内规则填写的标签名一致,如果未创建或和标签名和规则不一致,则会无法翻译,有可能火车头软件还会报错。
  • 5.开启火车头采集工具的PHP插件功能V9版本的火车头采集器在“编辑任务”>“其他设置”>“插件”>“采集结果处理插件”里,选择GoogleTranslate.php后保存规则。火车头7.6版本在“编辑任务”>“文件保护及部分高级设置”>“任务PHP插件”里,选择GoogleTranslate后保存规则。完成了以上步骤,只要翻译方向和翻译标签没错的话,就可以正常翻译了。
    《火车头采集谷歌翻译PHP插件》

语言标识

语言标识码 名称 语言标识码 名称
auto 自动检测
zh-CN 中文(简体) zh-TW 中文(繁体)
en 英语 fr 法语
de 德语 ru 俄语
it 意大利语 ko 韩语
ja 日语 la 拉丁语
sq 阿尔巴尼亚语 ar 阿拉伯语
am 阿姆哈拉语 az 阿塞拜疆语
ga 爱尔兰语 et 爱沙尼亚语
eu 巴斯克语 be 白俄罗斯语
bg 保加利亚语 is 冰岛语
pl 波兰语 bs 波斯尼亚语
fa 波斯语 af 布尔语(南非荷兰语)
da 丹麦语 tl 菲律宾语
fi 芬兰语 fy 弗里西语
km 高棉语 ka 格鲁吉亚语
gu 古吉拉特语 kk 哈萨克语
ht 海地克里奥尔语 ha 豪萨语
nl 荷兰语 ky 吉尔吉斯语
gl 加利西亚语 ca 加泰罗尼亚语
cs 捷克语 kn 卡纳达语
co 科西嘉语 hr 克罗地亚语
ku 库尔德语 lv 拉脱维亚语
lo 老挝语 lt 立陶宛语
lb 卢森堡语 ro 罗马尼亚语
mg 马尔加什语 mt 马耳他语
mr 马拉地语 ml 马拉雅拉姆语
ms 马来语 mk 马其顿语
mi 毛利语 mn 蒙古语
bn 孟加拉语 my 缅甸语
hmn 苗语 xh 南非科萨语
zu 南非祖鲁语 ne 尼泊尔语
no 挪威语 pa 旁遮普语
pt 葡萄牙语 ps 普什图语
ny 齐切瓦语 sv 瑞典语
sm 萨摩亚语 sr 塞尔维亚语
st 塞索托语 si 僧伽罗语
eo 世界语 sk 斯洛伐克语
sl 斯洛文尼亚语 sw 斯瓦希里语
gd 苏格兰盖尔语 ceb 宿务语
so 索马里语 tg 塔吉克语
te 泰卢固语 ta 泰米尔语
th 泰语 tr 土耳其语
cy 威尔士语 ur 乌尔都语
uk 乌克兰语 uz 乌兹别克语
es 西班牙语 iw 希伯来语
el 希腊语 haw 夏威夷语
sd 信德语 hu 匈牙利语
sn 修纳语 hy 亚美尼亚语
ig 伊博语 yi 意第绪语
hi 印地语 su 印尼巽他语
id 印尼语 jw 印尼爪哇语
yo 约鲁巴语 vi 越南语

注意事项

  • 如果是测试的话,“翻译方向”和“翻译标签”这两个标签一定要设置,否则火车头软件会报错。
  • 我没有测试单篇文章字数很多时的效率和成功率,所以不知道如果采集的文章很长的话能不能正常翻译。
  • GoogleTranslate插件的原理是将采集结果去请求Google在线翻译,然后再模拟浏览器将翻译结果抓取下来保存在火车头采集器里,所以如果Google翻译的网页规则变了的话,插件可能会无法使用。
  • 我在火车头V9和7.6两个版本里都测试了,均能正常使用。如果火车头软件出现“您使用的PHP插件存在语法或其他问题,请检查!”这个错误提示,请按上面的使用方法中第1条,看看是否正确修改了火车头的PHP环境;然后再检查翻译方向、翻译标签设置的规则是否和你的采集规则一致。

如果插件突然使用不了了的话,可以在下面留言,或联系我。另外我是PHP渣,写这个插件的时候是一边搜索一边写的,如果你对PHP很了解,对这个插件有什么优化建议,欢迎评论留言告诉我。

PHP插件内容如下:

<?php
function translate($text){
$query = urlencode($text);
$url = 'https://translate.google.cn/translate_a/single?client=gtx&dt=t&ie=UTF-8&oe=UTF-8&sl='.FROM.'&tl='.TO.'&q='.$query;
set_time_limit(0);
$ch = curl_init();
curl_setopt($ch, CURLOPT_REFERER, "https://translate.google.cn" );
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36' );
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS,20);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 40);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
curl_close($ch);
$result = json_decode($result);
if(!empty($result)){
foreach($result[0] as $k){
$v[] = $k[0];
}
return implode(" ", $v);
}
}
if($LabelArray['PageType']=="Save")[bdbtn][/bdbtn]
{
$direction = explode('>' , $LabelArray['翻译方向']);
define("FROM",$direction[0]);
define("TO",$direction[1]);
$tab = explode(',' , $LabelArray['翻译标签']);
foreach($tab as $t_value){
$arr[] = explode('>' , $t_value);
}
$arrlength=count($arr);
for($x=0;$x<$arrlength;$x++){
$LabelArray[''.$arr[$x][1].''] = translate($LabelArray[''.$arr[$x][0].'']);
}
}
echo serialize($LabelArray);
?>

 

本地下载 云盘下载 提取码: zysm

点赞