你讓你的 Excel 學口譯了么?
最近 Apple ID 被盜,上傳了資料在等官解
這天無聊開著 Excel 在那亂點…
Web 函數…這是什麼鬼 (,,? ? ?,,)?趕緊地看下函數說明
ENCODEURL(text):返回 URL 編碼的字元串。
WEBSERVICE(url):返回 Web 服務中的數據。FILTERXML(xml,n xpath):使用指定的 XPath 從 XML 內容返回特定數據。
厲害了我的哥!(o ° ω ° O)
當即我就腦補出了用 Excel 網抓的流程:
=FILTERXML(WEBSERVICE(ENCODEURL(urlText)),XPathText)n
簡直完美!(╭ ̄ 3  ̄)╭?
……
Wait!
……
好像哪裡不太對!?
……
X…M…L…?
如果你能找到在線XML文檔…
正常網站都是用 HTML 的吧!!OTL
然後
—— Microsoft Office 幫助
- 對於不支持的協議,例如 ftp:// 或 file://,WEBSERVICE 返回錯誤值 #VALUE!
- 如果 url 字元串所含字元超過 GET 請求允許的 2048 個字元,則 WEBSERVICE 返回錯誤值 #VALUE!
- 如果參數導致字元串無效或含有的字元超過允許的單元格限制(32767 個字元),則 WEBSERVICE 返回錯誤值 #VALUE!
???【黑人問號臉.gif】我默默地看了下自己知乎主頁的源碼…
(っ °Д °;)っ︵┻━┻
這年頭網上已經沒有只用 GET 請求字元總數在 32767 個字元一下的 XML 文檔了吧!!!
不信我搜給你看!
……
你別說,還真有! (⊙ . <#(@=……
http://dict.youdao.com/search?q=cookie&doctype=xml
不知道哪位大神分享的有道詞典的XML版
……
簡直完美!(╭ ̄ 3  ̄)╭?
既然搞到了有道老師的 XML 文檔,為什麼不調教調教 Excel 學口譯呢?!
如果你會一丟丟 XPath
初級口譯:問一個答一個
不會?…就只能速成了!
XPath 使用路徑表達式來選取 XML 文檔中的節點或者節點集
那啥叫節點呢?看圖說話
看到一個個書名號沒有?看到紅框框沒有?剩下的請去 W3School自學!
音標 //phonetic-symbol 和翻譯 //translation/content 的 XPath 套一下剛才YY的公式:
=FILTERXML(WEBSERVICE("http://dict.youdao.com/search?q="&[InputText]&"&doctype=xml"),XPathText[音標])n
再試試中文?
厲害了我的哥!(o ° ω ° O)不過貌似解決不了一詞多義?
如果你會一丟丟數組
中級口譯:問一個答一溜
研究一下中譯英的 XML 文件…發現打不開…
沒關係,還記得那個沒被想起來的 EncodeURL 么…轉化好以後是這樣的…
http://dict.youdao.com/search?q=%E9%A5%BC%E5%B9%B2&doctype=xml
果然有5個翻譯,卻只顯示了一個…想到 XPath 取得是節點集,那麼…用數組形式再轉置一下
多義是解決了,不過其他問題慘不忍睹啊…特別有道詞典貌似沒收錄我的哥…無解了吧不信我搜給你看!
……
你別說,還真有! (⊙ . <#(@=
……
http://fanyi.youdao.com/translate?i=cookie&doctype=xml
不知道哪位大神分享的有道翻譯的XML版…
……
簡直完美!(╭ ̄ 3  ̄)╭?
如果你碰巧找到了另一份在線XML文檔
高級口譯:問啥答啥
不過有道翻譯沒音標,所以能用詞典還是要用詞典的
- 第一個 IFERROR 處理有道詞典沒收錄的換有道翻譯
- 第二個 IFERROR 處理 #N/A
- 條件格式處理重複值
厲害了我的哥!(o ° ω ° O)
音標n=IFERROR(FILTERXML(WEBSERVICE("http://dict.youdao.com/search?q="&$B3&"&doctype=xml"),XPathText_D[音標]),"--")nn翻譯 數組形式 Ctrl + Shift + Entern=IFERROR(IFERROR(TRANSPOSE(FILTERXML(WEBSERVICE("http://dict.youdao.com/search?q="&B3&"&doctype=xml"),XPathText_D[詞典])),TRANSPOSE(FILTERXML(WEBSERVICE("http://fanyi.youdao.com/translate?i="&B3&"&doctype=xml"),XPathText_D[翻譯]))),"")n
本來到這裡應該結束了,但是今天是個特殊的日子!
如果你會一丟丟VBA
我已經把所有的全忘記了!
寫個自定義函數<刪除>裝逼</刪除>吧
Option ExplicitnnFunction UDF_Translate(strText As String) As Stringn Version1.0 by 餅乾n Dim urlDict As String, urlTranslate As String, xmlText As Stringn Dim PhoneticSymbol As String, TranslateArrn n 整理urln urlDict = "http://dict.youdao.com/search?q=" & strText & "&doctype=xml"n urlTranslate = "http://fanyi.youdao.com/translate?i=" & strText & "&doctype=xml"n n 使用 WebService 和 FilterXML 獲取網路數據n On Error GoTo Error01n xmlText = Application.WorksheetFunction.WebService(urlDict)n Debug.Print xmlText 調試用n PhoneticSymbol = Application.WorksheetFunction.FilterXML(xmlText, "//phonetic-symbol")n TranslateArr = Application.WorksheetFunction.FilterXML(xmlText, "//translation/content[1]")n n 整理數據n If IsArray(TranslateArr) Thenn UDF_Translate = "[" & PhoneticSymbol & "] " & Join(Application.WorksheetFunction.Transpose(TranslateArr), ";")n Elsen UDF_Translate = "[" & PhoneticSymbol & "] " & TranslateArrn End Ifn Debug.Print Translate 調試用nExit FunctionnError01: 若有道詞典報錯n On Error GoTo Error02n xmlText = Application.WorksheetFunction.WebService(urlTranslate)n Debug.Print xmlText 調試用n UDF_Translate = Application.WorksheetFunction.FilterXML(xmlText, "//translation")n Debug.Print Translate 調試用nExit FunctionnError02: 若有道翻譯報錯n UDF_Translate = Err.DescriptionnEnd Functionn
效果圖:
1024快樂!
Fin
推薦閱讀:
※zhihu-oauth 能否快速判斷兩個用戶(非登錄用戶)之間的關注關係?
※如何使用c++語言進行數據抓取?
※前嗅的這款數據採集軟體和像八爪魚這類的軟體有什麼區別,優勢在哪?
※新浪微博數據抓取方法有哪些?
※App中的數據可以用網路爬蟲抓取么?