Kali自己写一个翻译软件来用

开发基础语言:Go

系统环境:Kali

先上自己的代码,2019年04月07日17:14:41

原理:向有道翻译,发送GET请求。
解析服务器反馈结果。
如需要更强大的翻译,请自己根据所需,开发一个。

下面是全部代码:

//	作者:[email protected]
package main
import (
	"os"
	"fmt"
	"bufio"
	"regexp"
	"strings"
	"net/http"
	"io/ioutil"
)

func main(){
	for{
		reader := bufio.NewReader(os.Stdin)
		fmt.Println("=====================================================================")
		fmt.Print("单词原文:")
		cizu, _, _ := reader.ReadLine()
		fmt.Println()
		url := fmt.Sprintf("http://dict.youdao.com/search?q=%s", string(cizu))

		//第一步:获取 url 的Get请求,响应结果
		response, err := http.Get(url)
		if nil != err{
			fmt.Println("获取网页源码失败:", err)
			return
		}

		//第二步:读取网页主体body
		bytes, _ := ioutil.ReadAll(response.Body)

		//第三步:解析body,提取需要的数据
		guojia :=  GetDuyinGuojia(string(bytes))
		duyin :=  GetDuyin(string(bytes))
		value := GetValue(string(bytes))

		//第四步:打印结果
		for i, _ := range guojia{
			fmt.Printf("国家:%s\t读音:%s\n", guojia[i][1], duyin[i][1])
		}

		var i = 0
		for _, data := range value{
			i++
			fmt.Printf("中文解释%d:\t%s\n", i, data)
		}
	}
}

func GetDuyin(body string)(result [][]string){
	reg := regexp.MustCompile(`<span class="phonetic">(.+?)</span>`)	//ed2k正则表达式规则
	if reg == nil{
		fmt.Println("正则表达式,编译错误:", reg)
		return
	}else{
		result = reg.FindAllStringSubmatch(body, -1)
		return result
	}
}

func GetDuyinGuojia(body string)(result [][]string){
	reg := regexp.MustCompile(`<span class="pronounce">(.+?)`)	//ed2k正则表达式规则
	if reg == nil{
		fmt.Println("正则表达式,编译错误:", reg)
		return
	}else{
		result = reg.FindAllStringSubmatch(body, -1)
		return result
	}
}

func GetValue(body string)(map[string]string){
	var temp [][]string
	result := make(map[string]string, 1024)
	reg := regexp.MustCompile(`<li>(.+?)</li>`)	//ed2k正则表达式规则
	if reg == nil{
		fmt.Println("正则表达式,编译错误:", reg)
		return nil
	}else{
		temp = reg.FindAllStringSubmatch(body, -1)
	}
	for _, data := range temp{
			if strings.Contains(data[1], "<"){
				continue
			}else{
				result[data[1]] = data[1]
			}
	}
	return result
}

不多说,首先,编译起来。

Kali自己写一个翻译软件来用
然后,将编译的结果,改一个容易输入的名字。
比如,我改成ruify,这样在终端就比较容易输入了。
Kali自己写一个翻译软件来用
然后,将这个ruify/usr/local/bin目录下。
Kali自己写一个翻译软件来用
OK,大功告成。
试试,在终端输入ruify看看。

Kali自己写一个翻译软件来用
OK,能跑起来,就表示正常,OK了。
试试,输入几个单词,看看。
Kali自己写一个翻译软件来用

温馨提示:

翻译某些不存在的单词,或者中文拼音等,可能会出现BUG。
所以,尽量用于单词的翻译哟。