最近有批量翻譯的需求,看了一下有python介面的翻譯效果都不行,最終還是自己寫了乙個呼叫google翻譯的類。因為現在google翻譯反爬蟲的手段很強勢,普通requests很難突破,這裡給出基於selenium的**(firefox)
from requests import session
from bs4 import beautifulsoup
from selenium import webdriver
from selenium.webdriver.support.ui import webdriverwait
import time
""" 平台:csdn
創作不易,僅供分享
"""# google現在反爬蟲做得確實很好, 上面這個是提交url, 裡面有個tk欄位我看不懂什麼意思, 而且這個tk欄位是很關鍵的字段, 缺少後無法獲取
# 所以只能考慮先用selenium弄了
class translation():
def __init__(self,):
self.langs = ["cn","en"] # 目前處理中英文
self.options = webdriver.firefoxoptions() # 火狐驅動配置
self.options.add_argument("--headless") # 設定無頭瀏覽器的配置
pass
def translate(self,string,target="cn",headless=false):
if not target in self.langs:
print("error: 未知的語言")
return false
b = webdriver.firefox(options=self.options) if headless else webdriver.firefox() # 使用無頭瀏覽器省時間
b.get("")
if target=="cn": pass # 預設翻譯為中文
if target=="en": b.find_elements_by_id("sugg-item-en")[1].click()# 英文就點一下(這個定位有點麻煩, 因為有個跟它長得很像的元素, 之後再想想辦法吧)
time.sleep(.5)
b.find_element_by_id("source").send_keys(string)
print("開始等待...")
t = time.time()
# 一般的短句子這個等待很短,只有不到1秒,大部分時間浪費在前後的**上
webdriverwait(b,30).until(lambda b_: b_.find_element_by_xpath("//span[@title='']").is_displayed())
html = b.page_source
soup = beautifulsoup(html,"lxml")
span = soup.find("span",class_="")
print(span.string)
b.quit()
if __name__ == "__main__":
t = translation()
#t.translate("i am a chinese",target="cn")
t.translate("我是乙個中國人",target="en")
這裡使用了無頭瀏覽器(設定引數headless為true),執行時不會彈出瀏覽器,如果出問題可以改掉webdriver的options引數看看執行**有問題。
因為翻譯成英文對應的那個按鈕與左邊那個英文的元素極其相似,用xpath定位需要加很多條件,就太硬了。我**裡直接用id定位取第二個元素,可能過一段時間出問題(比如左邊沒有英文這個按鈕了)?
測試基本上問題不大,速度有點堪憂,主要浪費在開啟瀏覽器上,普通的一句話1秒內都能翻譯出來;
附一張上面**的執行結果?
分享學習,共同進步!
Google翻譯介面 PHP API
google翻譯php介面 官成文 2009 03 28 注意 如果翻譯文字為utf 8編碼,則要刪去mb convert encoding函式 class google api translator public url public text 翻譯文字 public out 翻譯輸出 funct...
破解google翻譯介面
按f12,點選network。在左側輸入 who are you https 傳送的資料為 這裡面的who are you表示,需要翻譯的文字 ja 表示日本的簡稱。usr bin python3 coding utf 8 import requests import redef translate...
免費的Google翻譯API介面
free google translator api 免費的google翻譯,其中的破解思路主要 於將 的web訪問方式模擬成全部 的形式來控制api的訪問 2.大量的請求也會使此介面的服務不可用 text hello world googletrans query text,lang to zh ...