Home >  > 调用Google的API接口翻译文章

调用Google的API接口翻译文章

0

一、运行的效果如下:
Snap62

二、源码如下:

1import requests
2from bs4 import BeautifulSoup
3 
4 
5def getHTMLText(url):
6    try:
7        r = requests.get(url, timeout=30)
8        r.raise_for_status()
9        return r.text
10    except:
11        print("Get HTML Text Failed!")
12        return 0
13 
14 
15def google_translate_EtoC(to_translate, from_language="en", to_language="ch-CN"):
16    # 根据参数生产提交的网址
17    base_url = "https://translate.google.cn/m?hl={}&sl={}&ie=UTF-8&q={}"
18    url = base_url.format(to_language, from_language, to_translate)
19 
20    # 获取网页
21    html = getHTMLText(url)
22    if html:
23        soup = BeautifulSoup(html, "html.parser")
24 
25    # 解析网页得到翻译结果
26    try:
27        result = soup.find_all("div", {"class": "t0"})[0].text
28    except:
29        print("Translation Failed!")
30        result = ""
31 
32    return result
33 
34 
35def google_translate_CtoE(to_translate, from_language="ch-CN", to_language="en"):
36    # 根据参数生产提交的网址
37    base_url = "https://translate.google.cn/m?hl={}&sl={}&ie=UTF-8&q={}"
38    url = base_url.format(to_language, from_language, to_translate)
39 
40    # 获取网页
41    html = getHTMLText(url)
42    if html:
43        soup = BeautifulSoup(html, "html.parser")
44 
45    # 解析网页得到翻译结果
46    try:
47        result = soup.find_all("div", {"class": "t0"})[0].text
48    except:
49        print("Translation Failed!")
50        result = ""
51 
52    return result
53 
54 
55def main():
56    while True:
57        inp = int(input("Chinese to Englisth is 1, English to Chinese is 2:    "))
58        if inp == 1:
59            words = input("请输入中文:    ")
60            print(google_translate_CtoE(words))
61        else:
62            words = input("Please input English:    ")
63            print(google_translate_EtoC(words))
64 
65 
66main()

可参考的:
https://github.com/ssut/py-googletrans
https://github.com/terryyin/translate-python
https://github.com/yucongo/mgoogle_translate

updated on July-12-2020
三、写成一个类

1import requests
2import json
3from bs4 import BeautifulSoup
4 
5def get_ip():
7 
8    html = requests.get(url)
9    html = html.text
10    print(html)
11 
12    json_data = json.loads(html)
13    ip_list = []
14    # print(json_data['data'])
15    for i in json_data['data']:
16        # print("http://"+i['ip']+":"+str(i['port']))
17        ip = "http://"+i['ip']+":"+str(i['port'])
18        # print("*"*10)
19        ip_list.append(ip)
20    return ip_list
21 
22proxy_ip = get_ip()[0]
23proxies = { "http": proxy_ip }  
24 
25 
26class Translate():
27    def __init__(self, content, proxy):
28        self.content = content
29        self.proxy = proxy
30 
31     
32    def getHTMLText(self,url):
33        try:
34            r = requests.get(url, proxies = self.proxy,timeout=30)
35            print(self.proxy)
36            r.raise_for_status()
37            return r.text
38        except:
39            print("Get HTML Text Failed!")
40            return 0
41         
42 
43    def get_chinese_conetent(self,from_language="en", to_language="ch-CN"):
44        # 根据参数生产提交的网址
45        base_url = "https://translate.google.cn/m?hl={}&sl={}&ie=UTF-8&q={}"
46        url = base_url.format(to_language, from_language, self.content)
47 
48        # 获取网页
49        html = self.getHTMLText(url)
50        if html:
51            soup = BeautifulSoup(html, "html.parser")
52 
53        # 解析网页得到翻译结果
54        try:
55            result = soup.find_all("div", {"class": "t0"})[0].text
56        except:
57            print("Translation Failed!")
58            result = ""
59 
60        return result
61 
62    def get_english_conetent(self,from_language="ch-CN", to_language="en"):
63        # 根据参数生产提交的网址
64        base_url = "https://translate.google.cn/m?hl={}&sl={}&ie=UTF-8&q={}"
65        url = base_url.format(to_language, from_language, self.content)
66 
67        # 获取网页
68        html = self.getHTMLText(url)
69        if html:
70            soup = BeautifulSoup(html, "html.parser")
71 
72        # 解析网页得到翻译结果
73        try:
74            result = soup.find_all("div", {"class": "t0"})[0].text
75        except:
76            print("Translation Failed!")
77            result = ""
78 
79        return result
80 
81 
82a = "i love you very much"
83c = Translate(a, proxies)
84r = c.get_chinese_conetent()
85print(r)

用法:

1from google_translate import Translate
2 
3t2 = Translate(a)
4ch_content = t2.get_chinese_conetent()
5print(ch_content)

四、注意事项
1.如果英文中有“&”这个符号,会影响翻译,就是到了&就断了,后面的句子不翻译。解决方案:

1x= x.replace("&","and")
2content = content.replace("#","")  #这个符号也会造成翻译的问题

五、最新版本
https://github.com/lushan88a/google_trans_new/issues

暧昧帖

本文暂无标签

发表评论

*

*